计时器
1i
cludereg52hi
cludestdiohi
cludei
tri
shsbitpausebutto
P32。sbitcou
tbutto
P33。biti
t0_Mark。u
sig
edcharHEXtoBCDu
sig
edcharhexretur
hex1016hex10。voidmai
voidu
sig
edcharuc10ms0uc1s0uc60s0。TMOD0x01。IE0x82。while1cou
tbutto
1。uc10ms0uc1s0。P1HEXtoBCDuc10ms。P2HEXtoBCDuc1s。whilecou
tbutto
。whilecou
tbutto
。whilepausebutto
i
t0_Mark1。TH00xDC。TL00x00。TR01。EA1。whilei
t0_Mark。EA0。TR00。uc10ms。ifuc10ms100uc10ms0。uc1s。P1HEXtoBCDuc10ms。ifuc1s60uc1s0。uc60s。P2HEXtoBCDuc1s。111
fifpausebutto
whilepausebutto
。whilepausebutto
ifcou
tbutto
break。voidtimer0voidi
terrupt1EA0。i
t0_Mark0。TR00。TH00x28。TL00x00。TR01。EA1。
2i
cludereg52hdefi
eucharu
sig
edcharbiti
to_mark。ucharHEXtoBCDucharhex211
fretur
hex1016hex10。voidmai
voiducharuc10ms0uc1s0。IE0x87。EA1。打开总中断EX01。EX11。打开外部中断0、1ET01。打开定时器0中断RqS7gWq8Tvb5E2RGbCAPTCON0x05。IT01。IT11。脉冲触发TMOD0x01。设置定时器0为工作方式1uc10ms0uc1s0。P1HEXtoBCDuc10ms。P2HEXtoBCDuc1s。while1i
to_mark1。whilei
to_mark。等待10ms定时到uc10ms。ifuc10ms100uc10ms0。uc1s。P1HEXtoBCDuc10ms。ifuc1s60uc1s0。P2HEXtoBCDuc1s。voidextI
terrupt0voidi
terrupt0停止EA0。TR00。EA1。voidextI
terrupt1voidi
terrupt2启动EX10。TR01。打开定时器0也可以是ET01。EA1。voidtimer0voidi
terrupt1311
fEA0。i
to_mark0。TR00。TH00xDC。TL00x00。TR01。EX11。要在此打开外部中断1,不然的话外部中断会不再起作用的EA1。
串口通信
1i
cludereg52hi
cludei
tri
shdefi
eucharu
sig
edchardefi
eui
tu
sig
edi
tbitflag1。biti
to_mark。sbitSEND_RECI_CTRLP37。voidi
itUart。voidtimeui
tucMs。voidse
d。voidreceive。411
fucharcou
t1。ucharcou
t2。voidmai
IE0x87。TCON0x05。TMOD0x01。P10x00。P20x00。i
itUart。time10。ifSEND_RECI_CTRLse
d。elsereceive。voidse
dwhile1P2cou
t1。SBUFcou
t1。whileTI0。TI0。P1cou
t2。SBUFcou
t2。whileTI0。TI0。ucharcou
t1staticucharuc10ms0。while1i
to_mark1。TH00xDC。TL00x00。EA1。whilei
to_mark。uc10ms。ifuc10ms100uc10ms0。flag0。retur
uc10ms1016uc10ms10。ucharcou
t2staticucharuc1s0。while1ifflag0uc1s。flag1。ifuc1s60511
fuc1s0。retur
uc1s1016uc1s10。voidreceivewhile1whileRI0RI0。P2SBUF。whileRI0RI0。P1Sr