急求51单片机顺、倒计时60秒程序加注释下~好的话可再加财富!谢谢~!
- 提问者网友:相思故
- 2021-04-07 00:38
- 二级知识专家网友:嗷呜我不好爱
- 2021-04-07 01:31
START:MOV R0,#30
MOV DPTR,#TABLE
LOOP: LCALL DISPLAY
EDC R0
CJNE R0,#100,LOOP
DISPLAY: MOV A,R0
MOV B,#10
DIV AB
MOV R1,A
MOV R2,B
MOV R3,#50
LOOP1: MOV A,R2
LCALL CHANGE
CLR P3.1
LCALL DELAY
SETB P3.1
MOV A,R1
LCALL CHANGE
CLR P3.0
LCALL DELAY
SETB P3.0
CLR A
DJNZ R3,LOOP1
CHANGE: MOVC A,@A+DPTR
MOV P0,A
RET
DELAY: ;10ms延时
MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
说明:P0口接数码管 p3.0 p3.1为位选
- 1楼网友:邪性洒脱
- 2021-04-07 02:28
程序:
led_da equ p0 led_cs1 equ p3.0 led_cs2 equ p3.1 key equ p1.7 org 0000h ajmp main org 000bh ajmp time0 org 0030h main: mov r1,#6; mov r0,#0 mov ie,#82h ;初始化定时器,开总中断,开定时器中断 mov tmod,#02h ;定时器0选择2方式 mov th0,#56 ;设初值,200个机械周期溢出一次 mov tl0,#56 mov r2,#50 mov r3,#100 ;设定中断计数(12mhz晶振),50*100*200*1us=1s clr tr0 ; mov dptr,#table start: acall display ;数码管显示 acall check_key ;检查按键并进行操作 ajmp start
display: mov a,r1 movc a,@a+dptr mov led_da,a clr led_cs1 acall delay setb led_cs1
mov a,r0 movc a,@a+dptr mov led_da,a clr led_cs2 acall delay setb led_cs2 ret
check_key: jb key,return acall delay jb key,return jb tr0,return setb tr0 wait: acall display jnb key,return return: ret
time0: djnz r2,next mov r2,#50 djnz r3,next mov r3,#100
dec r0 cjne r0,#0ffh,next mov r0,#9
dec r1 cjne r1,#0ffh,next mov r0,#00h; mov r1,#00h clr tr0
next: reti
delay: mov r7,#248 djnz r7,$ ret
table:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,080h,90h end
相关文件已经发到你邮箱了!请注意查收!
- 2楼网友:抱不住太阳的深海
- 2021-04-07 02:08