📄 2seg.txt
字号:
;8MHZ
;二只数码管显示出0-99一百个数字
;电路连接为:164数据脚接RXD,而时针脚接TXD,TXD供时针信号
;P1.4为1时控制数码管个位显示,P1.3控制十位
led bit 20h ;专用于二只数码管LOOP显示
seg0 bit P1^4 ;为1时,表示数码管开,反之关
seg1 bit P1^3
org 00h
sjmp main
org 0bh
ajmp timer0 ;定时器0,4MS
org 0030h
main:
mov dptr,#table ;读表,用于显示
mov scon,#00h ;串口工作于方式0
mov r5,#00h ;1秒个数
mov r6,#00h ;计数最多为100计数器
mov th0,#0d6h
mov tl0,#55h ;4ms
main_loop:
mov tmod,#00h ;timer 工作于方式0
setb ea
setb et0
setb tr0 ;开始定时
call get_bit
ajmp main_loop
get_bit:
clr tr0 ;得到个位,十位过程不要定时
mov a,r6 ;R6暂存后a中
mov b,#10
div ab
mov r2,a ;十位存于R2
mov r1,b ;R1存个位
bit_back:
setb tr0 ;定时重新开始
ret
display:
clr seg1 ;先关后关.那里都一样
clr seg0
cpl led ;对位取反.LOOP显示二只灯
jnb led,led2
sjmp led1
led2:
mov a,r2 ;LED2显示十位
movc a,@a+dptr
mov r2,a
mov sbuf,r2
wait_1:
jnb ti,wait_1
clr ti
setb seg1 ;dis
sjmp dis_ret
led1:
mov a,r1 ;LED1显示个位
movc a,@a+dptr
mov r1,a
mov sbuf,r1
wait_2:
jnb ti,wait_2
clr ti
setb seg0 ;dis
dis_ret:
ret
timer0:
push acc
mov th0,#0d6h
mov tl0,#55h ;4ms
call display
inc r5
cjne r5,#255,timer0_back
mov r5,#00h ;定时至1s
inc r6
cjne r6,#100,timer0_back
mov r6,#00h ;最多计数至100
timer0_back:
pop acc
reti
table:
DB 00000011B ;'0'code
DB 10011111B ;'1'code
DB 00100101B ;'2'code
DB 00001101B ;'3'code
DB 10011001B ;'4'code
DB 01001001B ;'5'code
DB 01000001B ;'6'code
DB 00011111B ;'7'code
DB 00000001B ;'8'code
DB 00001001B ;'9'code
DB 11111111B ;nothing to display('A')
DB 00000000B ;ret data
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -