亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4463|回復: 0
打印 上一主題 下一主題
收起左側

單片機燈光控制器流程圖和源碼

[復制鏈接]
跳轉到指定樓層
樓主
程序流程圖

#include <reg51.h>
#include <stdio.h>
#define uchar unsigned char
sbit LED = P0^0;
uchar receive;
uchar sdata[11]={13,10,76,69,68,58,111,'0','0',13,10};
uchar slevel[11]={13,10,108,101,118,101,108,32,'0',13,10};
uchar delayH[9]={0xFC,0xF8,0xF4,0xF0,0xEC,0xE8,0xE4,0xE0,0xDC};
uchar delayL[9]={0x18,0x30,0x48,0x60,0x78,0x90,0xA8,0xC0,0xD8};
uchar j=9;                                                //初始亮度等級,共9
void main(void)                                        //程序初始化
{  
    TMOD=0x21;                                //定時器T0工作在方式1,定時器T1工作在方式2
    SCON=0x50;                                //串行口工作在方式1,允許接收
    PCON=0x80;                                //波特率加倍
    IT0=1;               
    IT1=1;
    TH1=0xF3;        
    TL1=TH1;
    PS=1;                                                //串行口中斷優先級為1
    ES=1;
    EX0=1;
    EX1=1;
    EA=1;
    TR0=1;
    TR1=1;
    LED=1;
    while (1)
    {;}
}
void smessage(uchar *p1)                //串行口發送程序
{  
    uchar i;
    ES=0;
    for(i=0;i<=10;i++)
    {
       SBUF=*p1;
       p1++;
       while(!TI)
       {;}
       TI=0;
    }
    ES=1;
}
void adjust(uchar r1)                                //根據接收到的信息調整led亮滅
{
    if(r1==0x31)                                        //接收到‘1’時,開啟led小燈
    {
       ET0=1;
       sdata[8]=0x00;
       sdata[7]='n';
       smessage(sdata);                        //發送字符串LEDon
    }
    else if(r1==0x30)                                //接收到‘0’時,關閉led小燈
    {
       ET0=0;
       LED=1;
       sdata[8]='f';
       sdata[7]='f';
       smessage(sdata);                        //發送字符串LEDoff
    }
    if(ET0)                                                        //判斷led是否開啟
    {
       if(r1==0x2B)                                //開啟狀態接收到‘+’時,亮度增加
       {
          j++;
          if(j==10)                                                //限制最高亮度
             j=9;
          slevel[8]=j+48;                                //計算j數值的ASCII
          smessage(slevel);                                //發送字符串level j
       }
       else if(r1==0x2D)                        //開啟狀態接收到‘-’時,亮度降低
       {
          j--;
          if(j==0)                                                //限制最低亮度
             j=1;
          slevel[8]=j+48;                                //計算j數值的ASCII
          smessage(slevel);                                //發送字符串level j
       }
    }
}
void int1() interrupt 2                                //開關按鈕中斷
{
    if(ET0==1)
       receive=0x30;
    else
       receive=0x31;
    adjust(receive);
}
void int0() interrupt 0                                //亮度調節按鈕中斷
{
    uchar k;
    k=P2;                                                        //獲取P2口狀態
    if(k==0x7F)                                        //亮度增加按鈕被按下
    {
       receive=0x2D;
       adjust(receive);
    }
    else if(k=0xBF)                                        //亮度降低按鈕被按下
    {
       receive=0x2B;
       adjust(receive);
    }
}
void terminal() interrupt 4                        //串行口接收中斷
{
    RI=0;
    receive=SBUF;
    adjust(receive);
}
void pwm(void) interrupt 1                        //pwm定頻調寬,頻率100Hz
{
    if(LED)                                                //高電平時,載入下次低電平T0初值
    {
       TH0=delayH[j-1];
       TL0=delayL[j-1];
    }
    Else                                                        //低電平時,載入下次高電平T0初值
    {
       TH0=delayH[9-j];
       TL0=delayL[9-j];
    }
    LED=!LED;                                        //燈光電平取反
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表