程序如下:
#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P1_4=P1^4; sbit K1=P3^2; sbit K2=P3^4; uchar aa; void main() { P1_4=0; aa=0; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; while(1) { if(K1==0) { P1_4=0; P0_0=0; P0_1=0; } if(aa==100) { aa=0; P0_1=1; P0_2=0; } if(K2==0) { P1_4=0; P0_0=1; P0_2=1; } } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; aa++; }
我的原意是要程序如此執(zhí)行:接通電源——(按鍵1按下——1、2號燈亮——延時5秒——2號燈滅3號燈亮——按鍵2按下——1、3號燈滅)括號內(nèi)循環(huán)執(zhí)行
可現(xiàn)在燒寫后是這樣執(zhí)行的:接通電源——(延時5秒——3號燈亮——按鍵1按下——1、2號燈亮——延時5秒——2號燈滅——按鍵2按下——1、3號燈滅)括號內(nèi)循環(huán)執(zhí)行
跟我的原意思不符,求哪位熱心人幫忙指點指點程序哪能里出問題了?
你再加個uchar變量bb,用來記錄1號鍵是否按下就行了,這是個超簡單的問題了。 修改如下幾行就搞定了.
if(K1==0) { P1_4=0; P0_0=0; P0_1=0; bb=8; } if((aa==100)&&(bb==8)) { aa=0; P0_1=1; P0_2=0; bb=0; }
謝謝你了——ADMIN
我今天試了一下子,可能是我的編譯器或是其它的什么原因,每次延時的時間不一樣,但是如果在它一個周期結(jié)束后有按復(fù)位鍵的話,它會很標(biāo)準(zhǔn),每次都是5秒。今天太晚了,我明天還要上班,等我明天弄懂了,再聊!
有你們的幫助,我會繼續(xù)努力 。。。。。。對了,你有沒有一些建議或資料可以給我的(最基礎(chǔ)的),因為我C語言0基礎(chǔ),單片機(jī)0基礎(chǔ),編程0基礎(chǔ),電腦軟硬件0基礎(chǔ),
哈
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |