好文档 - 专业文书写作范文服务资料分享网站

单片机定时器实验

天下 分享 时间: 加入收藏 我要投稿 点赞

DJNZ R7,delay1 POP 07 RET

LEDTAB:DB 03H,9FH,25H,0DH;0,1,2,3 DB 99H,49H,41H,1FH;4,5,6,7 DB 01H,09H,11H,0C1H;8,9,A,B DB 63H,85H,61H,71H;C,D,E,F END

2、修改上面的程序,设计一个N秒倒计时器(N为学号后两位)。倒计时时间到后,重新开始计时。 LEDCLK BIT ; LEDDIN BIT ;

LEDDATA DATA P0; DSEG AT 30H dispbuf: ds 8;显示缓冲区 timetick: ds 1 second: ds 1 minute: ds 1 hour: ds 1

TIMECOUNT EQU 50000 CSEG at 0000H SJMP MAIN ORG 000BH LJMP P_T0 P_T0:

ORG 0030H;中断服务程序

PUSH PSW PUSH ACC PUSH DPH PUSH DPL

MOV TH0,#(65535-TIMECOUNT)/256

MOV TL0,#(65535-TIMECOUNT)MOD 256 SETB RS0;后面所使用的R0~r7

DJNZ timetick,P_T01 MOV timetick,#20 dec second MOV A,second

CJNE A,#00,P_T01 MOV SECOND,#33 P_T01: MOV A,second

MOV B,#100 DIV AB MOV R0,#dispbuf+2 MOV @R0,A DEC R0 MOV A,B MOV B,#10 DIV AB MOV @R0,A DEC R0 MOV @R0,B CLR RS0 POP DPL POP DPH POP ACC POP PSW RETI MAIN: mov sp,#60h MOV dispbuf,#0 MOV dispbuf+1,#0 MOV dispbuf+2,#0 MOV dispbuf+3,#0 MOV dispbuf+4,#0 MOV dispbuf+5,#0 MOV dispbuf+6,#0 MOV dispbuf+7,#0 mov timetick,#20 mov second,#33 MOV TH0,#(65535-TIMECOUNT)/256;3CAF MOV TL0,#(65535-TIMECOUNT)MOD 256; MOV TMOD,#01H

SETB ET0;允许T0溢出中断 SETB TR0;启动t0 SETB EA;开启总中断

MAIN1: ACALL DISP SJMP MAIN1 DISP: MOV R6,#8 MOV R0,#dispbuf CLR LEDCLK

CLR LEDDIN NOP

DISP1: SETB LEDCLK MOV A,@R0 MOV DPTR,#LEDTAB MOVC A,@A+DPTR MOV LEDDATA,A; MOV R7,#5 ACALL DelayNms INC R0 SETB LEDDIN CLR LEDCLK DJNZ R6,DISP1

RET; 大延时

DelayNms:

D1: ACALL Delay1ms DJNZ R7,D1

RET; 延时子程序

Delay1ms: push 07 mov R7,#250 delay1: NOP NOP DJNZ R7,delay1 POP 07 RET LEDTAB: DB 03H,9FH,25H,0DH;0,1,2,3 DB 99H,49H,41H,1FH;4,5,6,7 DB 01H,09H,11H,0C1H;8,9,A,B DB 63H,85H,61H,71H;C,D,E,F END

思考题

1、在实验程序基础上编写一个24小时计时时钟。 LEDCLK BIT ; LEDDIN BIT ;

LEDDATA DATA P0; DSEG AT 30H

dispbuf: ds 8;显示缓冲区 timetick: ds 1

second: ds 1 minute: ds 1 hour: ds 1

TIMECOUNT EQU 50000 CSEG at 0000H SJMP MAIN ORG 000BH LJMP P_T0

ORG 0030H;中断服务程序

P_T0:

PUSH PSW PUSH ACC PUSH DPH PUSH DPL

MOV TH0,#(65535-TIMECOUNT)/256

MOV TL0,#(65535-TIMECOUNT)MOD 256 SETB RS0;后面所使用的R0~r7

DJNZ timetick,P_T02 MOV timetick,#20 INC second MOV A,second

CJNE A,#60,P_T01;秒 MOV SECOND,#0 inc minute; MOV A,minute;分 CJNE A,#60,P-T01 INC HOUR;时 MOV A,HOUR CJNE A,#12,P-T01 MOV HOUR,#0

P_T01: MOV A,second MOV B,#100 DIV AB

MOV R0,#dispbuf+2 MOV @R0,A DEC R0 MOV A,B MOV B,#10 DIV AB

MOV @R0,A

DEC R0

MOV @R0,B P_T02: CLR RS0 POP DPL POP DPH POP ACC POP PSW RETI MAIN:

mov sp,#60h MOV dispbuf,#0 MOV dispbuf+1,#0 MOV dispbuf+2,#0 MOV dispbuf+3,#0 MOV dispbuf+4,#0 MOV dispbuf+5,#0 MOV dispbuf+6,#0 MOV dispbuf+7,#0

MOV TH0,#(65535-TIMECOUNT)/256;3CAF MOV TL0,#(65535-TIMECOUNT)MOD 256; MOV TMOD,#01H;设定定时器的工作方式 SETB ET0;允许T0溢出中断 SETB TR0;启动t0 SETB EA;开启总中断 MAIN1:

ACALL DISP SJMP MAIN1 DISP:

MOV R6,#8

MOV R0,#dispbuf CLR LEDCLK CLR LEDDIN NOP

DISP1: SETB LEDCLK MOV A,@R0

MOV DPTR,#LEDTAB MOVC A,@A+DPTR MOV LEDDATA,A; MOV R7,#5

ACALL DelayNms INC R0

单片机定时器实验

DJNZR7,delay1POP07RETLEDTAB:DB03H,9FH,25H,0DH;0,1,2,3DB99H,49H,41H,1FH;4,5,6,7DB01H,09H,11H,0C1H;8,9,A,BDB63H,85H,61H,71H;C,D,E,FEND2、
推荐度:
点击下载文档文档为doc格式
6bbtu8fo896et871df8g8njyy26yjv018h8
领取福利

微信扫码领取福利

微信扫码分享