欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
用單片機定時器實現流水燈即時熄滅和暫停的Proteus仿真+代碼
[打印本頁]
作者:
彬bin
時間:
2019-5-1 12:07
標題:
用單片機定時器實現流水燈即時熄滅和暫停的Proteus仿真+代碼
原代碼
按鍵1 控制亮滅,按下時燈滅,再按下繼續流水
按鍵2 控制暫停,
按下時暫停,保持該LED燈亮,再按下繼續
單片機源程序如下:
#include<reg52.h>
sbit KEY=P3^2; //按鍵1
sbit KEY1=P3^3; //按鍵2
unsigned char code d[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0x00,0xff}; //燈的效果(常量)
void time();
void timer();//調用中斷
bit flag; //標志位1
bit flag1; //標志位2
void main()
{
time();
while(1)
{
if(!KEY)
{
if(!KEY)
{
while(!KEY); //控制燈停止的按鍵
{flag=~flag;}
}
}
if(!KEY1)
{
if(!KEY1)
{
while(!KEY1); //控制燈熄滅的按鍵
{flag1=~flag1;}
}
}
}
}
void time()
{
TMOD|=0x01;
//設置定時器工作模式TMOD(定時器工作方式寄存器);
//GATE(定時器/計數器的開關控制選項)設置為0;即定時器/計數器的開關控制僅由TCON寄存器中的TRx(x = 0,1)控制
//C/T位(定時器模式和計數器模式選擇位)設置為0使其工作在定時器模式下;將該位置1則為定時器模式。
//M1M0設置為01,使用16位計數
TH0 = 0xD8; //65536-10000
TL0 = 0xF0; //55536
EA =1; //開啟總中斷
EX0=1; //開啟0號外部中斷
IT0=1; //設置外部中斷0觸發方式,1 - 負跳變觸發
TR0=1; //定時器0運行控制位,將該位置1時啟動定時器0
ET0=1; //定時器/計數器0中斷允許位
}
void timer() interrupt 0
{
P2=0xff;
}
void timeer() interrupt 1
{
static unsigned int k=0;
static unsigned char i=0;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256; //實現延時
if((!flag)&&(!flag1))
{
k++;
if(k<150) //當兩個按鍵都沒有被按下時,燈進行流水效果
{P2=d[i];}
if(k==300)
{
k=0;
i++;
if(i==18)
i=0;
}
}
}
復制代碼
全部資料51hei下載地址:
Proteus 8.7模擬.zip
(52.52 KB, 下載次數: 18)
2019-5-1 12:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
hex原文件.zip
(607 Bytes, 下載次數: 12)
2019-5-1 12:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1