📄 com_int2.asm
字号:
;显示程序
;kbit EQU P3.2 ;千位数码管的位控制
; hbit EQU P3.3 ;百位数码管的位控制
;tbit equ p3.4 ;十位数码管的位控制
;ubit equ p3.5 ;各位数码管的位控制
; EQU 5AH ;显示缓冲区为5AH,5BH,5ch,5dh
org 00h
jmp start
org 23h ;串行中断入口地址
jmp com_int ;串行中断服务程序
org 100h
start: mov sp,#60h ;设置堆栈
lcall rest ;初始化
lcall comm ;串口初始化
loop2:lcall display
;jmp start ;原地等待
ret
; ************* 初始化 *********************
rest: ;mov p3,#00h ;禁止数码管显示
mov p1,#0
mov r2,#0
mov 5ah,#0
mov 5bh,#0
mov 5ch,#0
mov 5dh,#0
mov 50h,#0
mov 51h,#0
mov 52h,#0
clr p3.7 ;
clr p3.2 ;
clr p3.3 ;
clr p3.4 ;
clr p3.5 ;
; clr p3.0
; clr p3.1
RET ;返回
; ************** 串口初始化 *****************
;设置串行口工作方式1,定时器1作为波特率发生器
;波特率设置为 9600 ;
comm: mov tmod,#25h ;设置定时器T1工作方式2 ,计数器T0工作于方式1
mov tl1,#0fdh ;定时器计数初值,波特率 9600
mov th1,#0fdh ;定时器重装值
setb ea ;允许总的中断
setb es ;允许串行中断
clr et0 ;定时器T0不允许中断
mov pcon,#00h ;波特率不倍增
mov scon,#50h ;设置串口工作方式1,REN = 1 允许接收
setb tr1 ;定时器开始工作
ret ;返回
;***********处理显示数据**********************
dlcom1: mov a,50h ;
mov 52h,#0
mov r0,#52h
xchd a,@r0
swap a
mov 5ah,a
mov 5bh,@r0
mov a,51h
mov @r0,#0
xchd a,@r0
swap a
mov 5ch,a
mov 5dh,@r0
ret
;**************显示程序 ************
display: lcall dlcom1
mov r3,#02h
loop1: mov r0,#5Ah ;千位显
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -