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

標題: 單片機燈光控制器流程圖和源碼 [打印本頁]

作者: yzlj    時間: 2018-12-18 20:15
標題: 單片機燈光控制器流程圖和源碼
程序流程圖

#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;                                        //燈光電平取反
}






歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1