📄 myproj.asm
字号:
org 0000H
LJMP Main
org 0003H
LJMP Int0Add
org 000bH
LJMP TimeSec
org 0013H
LJMP Int1Dec
org 0023H
LJMP RecvDat
org 0100H
Main: ;初始化
mov SP,#60h
mov R0,#01h
mov R1,#10h
mov R4,#00h
mov R3,#3ch
mov R2,#00h
mov P2,#0FFh
mov P0,#0FFH
mov DPTR,#0400H
mov TMOD,#21h
mov TH1,#0fdh
mov TL1,#0Fdh
mov TH0,#00h
mov TL0,#00h
mov SCON,#50h
mov PCON,#00h
mov IE,#0d7h
setb it1
setb it0
setb TR1
setb TR0
clr ri
clr F0
Again: ;循环调用显示
Call DispLed
Call DispNum
JMP Again
;LED显示
DispLed:
mov P2,#80h
mov P0,R0
mov R6,#05h
Call DelayMs
ret
;数码显示 注意修改位控位及位控电平
DispNum:
mov A,R0
mov B,#10h
div AB
movc A,@A+DPTR
mov p2,#40h
mov p0,A
mov R6,#05h
Call DelayMs
mov A,B
movc A,@A+DPTR
mov p2,#20H
mov P0,A
mov R6,#05h
Call DelayMs
ret
;外部中断0
Int0Add:
clr ex0
inc R0
setb ex0
reti
;外部中断1
Int1Dec:
clr ex1
dec R0
setb ex1
reti
;串行中断 实现简单的置数及计数启停
RecvDat:
jnb TI,RiCom
CLR TI
RiCom:
jnb RI,ExitCom
CLR RI
mov A,SBUF
mov R0,A
CJNE R0,#00h,NextCom
CLR TR0
NextCom:
CJNE R0,#01h,ExitCom
mov TH0,#0ffh
mov TL0,#0ffh
mov R1,#10h
Setb TR0
ExitCom:
reti
;定时器中断0
TimeSec:
mov TL0,#00h
mov TH0,#00h
DJNZ R1,ExitSec
mov R1,#10H
inc R0
ExitSec:
reti
;秒级延时子程序以130050us为单位,最大为130050us
DelaySs:
mov r6,#0ffh
ss:
mov r7,#0ffh
djnz r7,$
djnz r6,ss
djnz r5,DelaySs
ret
;毫秒延时子程序以510us为单位,最大为130050us
DelayMs:
mov r7,#0ffh
djnz r7,$
djnz r6,DelayMs
ret
;微秒延时以2us为单位,最大为510us
DelayUs:
djnz r7,$
ret
org 0400h
;共阳极数码管数模0~9、A~F
DB 0C0h,0F9H,0A4H,0B0H,099H,092H,082H,0F8H
DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -