|
給你改了,對(duì)比一下就知道哪里錯(cuò)了。
- //單片機(jī)狀態(tài)機(jī)按鍵程序點(diǎn)燈哪里錯(cuò)誤?
- #include "stc15w408as.h"
- #include"intrins.h"
- sbit key=P1^4;
- sbit led=P3^5;
- void Timer0Init(void);
- void key_scan();
- void Timer0Init(void) //2毫秒@11.0592MHz
- {
- AUXR |= 0x80; //定時(shí)器時(shí)鐘1T模式
- TMOD &= 0xF0; //設(shè)置定時(shí)器模式
- TMOD |= 0x00; //定時(shí)器T0,工作方式0 16位自動(dòng)重裝 <--------
- TL0 = 0x9A; //設(shè)置定時(shí)初值 // 65536-22118=43418
- TH0 = 0xA9; //設(shè)置定時(shí)初值
- TF0 = 0; //清除TF0標(biāo)志
- EA = 1; //開 總中斷 <---------
- ET0 = 1; //開啟定時(shí)器T0中斷允許位 <--------
- TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
- }
- void key_scan()
- {
- static unsigned char state_cnt=0;
- switch(state_cnt)
- {
- case 0x00: if(key==0)
- {
- state_cnt=0x01;
- break;
- }
- case 0x01: if(key==0)
- {
- state_cnt=0x02;
- led=~led;
- break;
- }
- else
- {
- state_cnt=0;
- break;
- }
- case 0x02: if(key==1)
- {
- state_cnt=0x00;
- break;
- }
- default: break;
- }
- }
- void t0int() interrupt 1 //(location at 000BH)
- {
- static unsigned char cnt=0;
- cnt++;
- if(cnt==5)
- {
- cnt=0;
- key_scan();
- }
- }
- void main()
- {
- led=0;
- led=1;
- key=1;
- Timer0Init();
- while(1) ;
- }
復(fù)制代碼 |
|