欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
51單片機(jī)LED燈中斷程序錯(cuò)誤求助
[打印本頁(yè)]
作者:
zzwzzw2000
時(shí)間:
2020-6-5 09:53
標(biāo)題:
51單片機(jī)LED燈中斷程序錯(cuò)誤求助
實(shí)驗(yàn)要求:
實(shí)驗(yàn)三 LED燈控制器
實(shí)驗(yàn)?zāi)康模杭由顚?duì)定時(shí)/計(jì)數(shù)器、中斷、IO端口的理解,掌握定時(shí)/計(jì)數(shù)器、中斷的應(yīng)用編程技術(shù)及中斷程序的調(diào)試方法。
實(shí)驗(yàn)內(nèi)容:利用C8051F310單片機(jī)設(shè)計(jì)一個(gè)LED燈控制器
主要功能和技術(shù)指標(biāo)要求:
1. LED燈外接于P0.0端。
2. LED燈分別按2Hz,1Hz和0.3Hz三種不同頻率閃動(dòng),各持續(xù)10秒。
3. 在LED燈開始和停止閃爍時(shí)蜂鳴器分別鳴響1次,時(shí)長(zhǎng)0.5秒。
4. 利用單片機(jī)內(nèi)部定時(shí)器定時(shí),要求采用中斷方式。
5. 單片機(jī)復(fù)位后開始執(zhí)行上述程序。
提高要求:
1. 使用按鍵(KINT)控制LED燈閃爍模式的切換。
2. 在LED數(shù)碼管上顯示當(dāng)前模式,顯示字符為
工作模式 數(shù)碼管顯示字符
2Hz 2
1Hz 1
0.3Hz 0.3
3.其它個(gè)性化設(shè)計(jì)(選做)
程序如上,每次想利用KINT(P3.1)調(diào)用切換模式的中斷,就出現(xiàn)以下情況,求求各位大佬應(yīng)該怎么辦
L8A${B181S}5)N8IY0W`IYU.png
(26.75 KB, 下載次數(shù): 73)
下載附件
2020-6-5 09:49 上傳
作者:
渣渣馬
時(shí)間:
2020-6-5 11:51
兄弟,你這H5寫的就不到位了!
作者:
渣渣馬
時(shí)間:
2020-6-6 14:47
本帖最后由 渣渣馬 于 2020-6-6 21:44 編輯
#include<reg51.h>
#include<intrins.h>
sbit D1=P0^0; //LED閃爍
sbit KINT=P3^1; //開關(guān)
sbit LS=P3^7; //無(wú)源蜂鳴器
char code DATA[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x40}; //CA段碼
char code a[][2]={{2,10},{1,10},{11,3}}; //數(shù)碼顯示的幾種模式
int t=0,temp=5; //t用于變數(shù)碼管,temp用于時(shí)間變換
void DelayMs(int x) //延時(shí)
{
int i;
while(x--) for(i=0;i<120;i++);
}
void LED2() //數(shù)碼顯示
{
int i,m;
m=0x01;
for(i=0;i<2;i++) P2=0xff,P1=_crol_(m,i),P2=DATA[a[t]
],DelayMs(1);
}
void BUZZ() //蜂鳴器響0.5s
{
int i;
for(i=0;i<500;i++) LS=!LS,DelayMs(2);
}
void init() //初始化
{
IE=0x8a; //¿aT0
TR0=1;
TR1=1;
TMOD=0x22;
TH0=(256-200)%256;
LS=1;
D1=1;
}
void main()
{
init();
while(1)
{
if(!KINT) 開關(guān)檢測(cè)
{
while(!KINT); //等待開關(guān)釋放
t=++t%3; //0~2
switch(t)
{
case 0:temp=5;break; //2Hz
case 1:temp=10;break; //1Hz
case 2:temp=3;break; //0.3Hz
default:break;
}
}
}
}
void time0() interrupt 1 //定時(shí)用
{
static int t0=0,t1=0;
t0++;
if(t0==500) //100ms
{
t1++;
t0=0;
if(t1==temp) //¸÷ÖÖê±¼äμÄÇD»»
{
D1=!D1;
BUZZ();
t1=0;
}
}
}
void time1() interrupt 3 //LED2數(shù)碼顯示
{
LED2();
}
/*代碼有點(diǎn)多,我是自己敲得,對(duì)你希望有用!把代碼放在Keil中顯示注釋*/
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1