关于定时器的研究解决方案
发布时间:2010-06-14 16:01:36 文章来源:www.iduyao.cn 采编人员:星星草
关于定时器的研究
刚初学单片机,想做个定时器定时给继电器供电或断电,时间可调,默认2分钟,
8255 pa,pb控制数码管,pc扫描键盘(只要4个键,pc1.2.3为行,pc4为列),做了几天始终做不来,可以显示,但是不能工作。。。。
高手帮忙改下程序
PA XDATA 0D1FFH
PB XDATA 0D2FFH
;PC XDATA 0D5FFH
CON XDATA 0D7FFH
SL EQU 40H
SH EQU 41H
ML EQU 42H
ORG 0000H
LJMP MAIN
ORG 000BH
MAIN:
MOV 30H,#00H
MOV 40H,#00H
MOV 41H,#00H
MOV 42H,#02H
MOV 60H,#1FH
MOV TMOD,#21H ;定时器工作方式;
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA ;开中断;
SETB ET0
SETB ET1
MOV DPTR,#CON ;控制字设置;
MOV A,#81H
MOVX @DPTR,A
LJMP KEYSCAN
LJMP START
LJMP TIME
;数码管显示函数;
START:
MOV 20H,#00H
MOV DPTR,#0D1FFH ;A选通分个位;
MOV A,#0FEH
MOVX @DPTR,A
MOV DPTR,#0D2FFH ;送PB显示分秒间隔符;
MOV A,#0A0H
MOVX @DPTR,A
MOV DPTR,#0D2FFH ;关闭数码管;
MOV A,0FFH
MOVX @DPTR,A
MOV DPTR,#0D1FFH ;A选通分个位;
MOV A,#0FDH
MOVX @DPTR,A
MOV A,42H ;分个位数赋值给a;
ADD A,20H
MOV DPTR,#TABLE ;取分个位数;
MOVC A,@A+DPTR
MOV 21H,A ;送pb显示分个位;
MOV DPTR,#0D2FFH
MOV A,21H
MOVX @DPTR,A
MOV DPTR,#0D2FFH ;闭数码管;
MOV A,0FFH
MOVX @DPTR,A
MOV DPTR,#0D1FFH ;A选通分秒间隔符;
MOV A,#0FBH
MOVX @DPTR,A
MOV DPTR,#0D2FFH ;送PB显示分秒间隔符;
MOV A,#07FH
MOVX @DPTR,A
MOV DPTR,#0D2FFH ;闭数码管;
MOV A,0FFH
MOVX @DPTR,A
MOV DPTR,#0D1FFH ;A选通秒十位;
MOV A,#0F7H
MOVX @DPTR,A
MOV A,41H ;秒十位数赋值给a;
ADD A,20H
MOV DPTR,#TABLE ;取秒十位数;
MOVC A,@A+DPTR
MOV 21H,A ;送pb显示秒十位;
MOV DPTR,#0D2FFH
MOV A,21H
MOVX @DPTR,A
MOV DPTR,#0D2FFH ;闭数码管;
MOV A,0FFH
MOVX @DPTR,A
MOV DPTR,#0D1FFH ;A选通秒个位;
MOV A,#0EFH
MOVX @DPTR,A
MOV A,40H ;秒个位数赋值给a;
ADD A,20H
MOV DPTR,#TABLE ;取秒个位数;
MOVC A,@A+DPTR
MOV 21H,A ;送pb显示秒个位;
MOV DPTR,#0D2FFH
MOV A,21H
MOVX @DPTR,A
MOV A,40H
JNZ OVER ;sl=0?是,继续,否,over;
MOV A,41H
JNZ OVER ;sH=0?是,继续,否,over;
MOV A,60H
JNZ OVER
CLR TR0 ;定时器关闭;
SETB TR1 ;定时器打开;
SETB P1.2 ;断开继电器;
MOV DPTR,#0D1FFH
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#0D2FFH
MOV A,#0A0H
MOVX @DPTR,A
OVER:LJMP START
TABLE:DB 0A0H,0BBH,62H,2AH,39H,2CH,24H,0BAH,20H,28H,0A0H
RET
;计时函数;
TIME:
PUSH ACC
PUSH PSW
INC 30H ;20次计数器加1;
MOV A,30H
CJNE A,#20H,GOON ;到20次?是,继续执行,否,跳入GOON;
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
c51串口求助!
串口接收程序如下
void rec_gps(void) interrupt 4 {
uchar str;
uint i,k;
k=0;
i=0;...
-
win7运行CodeWarrior IDE出错
我的本安装了CodeWarrior IDE,一运行就会出现提示:
IDE 4.1 Build 0622 已停止工作。
或者提示:
Unha...
-
关于AT指令控制GSM短信猫的问题
C/C++ code
打开串口
BOOL CComm::OpenComm(const char* pPort,
int nBaudRa...
-
关于51中断求教
各位大虾,我现在要做一个GPS授时的小程序,遇到如下困惑,求大虾们解答:
1 线路板上带有时钟芯片,平时显示时间是...
-
atd指令拨号,如何判断电话状态
在网上找了许久,终于找到一位仁心解决方案,这个指令是可以得到手机当时的状态,但是不管是空号、欠费、...
-
知道在哪跑飞,跑飞的详细原因有谁能解释一下。
今天出现这样的问题:
将这个中断函数注释掉:
#pragma vector=USCI_B2_VECTOR
__in...
-
51程序移植到2051
大牛们,我想吧一个51的程序移植到2051中,用NXP的89V51芯片时用到的I/O口只有P1.0 P1.1 P1.2 3三个,我现在移植到AT...
-
一道课程设计题:基于单片机的波形发生器的设计
设计要求:
1.能产生正弦波、方波、三角波、锯齿波等4种周期性波形,并且可通过调节变...
-
解析单片机最小系统及相关电路
原文出自:电子发烧友论坛——单片机论坛[color=#FF0000][/color]
单片机最小系统单片机最小系统介...
-
单片机学习书籍大全推荐
在电子发烧友论坛里看到了单片机学习资料汇总,特地搜罗了过来,不知道大家看过几本,也希望让需要学习的人 都...