📄 ind.asm
字号:
ORG 0000H
LJMP BANK
ORG 0030H
;================================================
BANK: SETB P0.7 ;输出禁止
CLR P0.5 ;禁止数据进入锁存器
SETB P0.0 ;使串行口无数据输出
ACALL BANK1
CLR P0.7
ACALL DELAY
SETB P0.7 ;输出禁止
CLR P0.5 ;禁止数据进入锁存器
SETB P0.0 ;使串行口无数据输出
ACALL BANK3
CLR P0.7
ACALL DELAY
SETB P0.7 ;输出禁止
CLR P0.5 ;禁止数据进入锁存器
SETB P0.0 ;使串行口无数据输出
ACALL LED1
CLR P0.7
ACALL DELAY
SETB P0.7 ;输出禁止
CLR P0.5 ;禁止数据进入锁存器
SETB P0.0 ;使串行口无数据输出
ACALL LED3
CLR P0.7
ACALL DELAY
AJMP BANK
BANK1: MOV R0,#08H ;寄存器送立即数
MOV A ,#00000001B ;将字符"A."二进制编码送累加器
ACALL OUT ;调用串行数据输出子程序
SETB P0.5 ;拉高锁存时钟线形成时钟上升沿
NOP
CLR P0.5 ;拉低锁存时钟线形成始终下降沿
NOP
SETB P0.5
NOP
CLR P0.5
ACALL BANK2 ;调用字符扫描位输出控制程序
RET ;返回主程序
BANK2: CLR C ;寄存器C清零
MOV R0,#08H ;寄存器送立即数
MOV A ,#11011111B ;将扫描控制编码送累加器
ACALL OUT ;调用串行数据输出子程序
SETB P0.5 ;拉高锁存时钟线形成时钟上升沿
NOP
CLR P0.5 ;拉低锁存时钟线形成始终下降沿
NOP
SETB P0.5
NOP
CLR P0.5
RET ;返回主程序
BANK3: MOV R0,#08H ;寄存器送立即数
MOV A ,#00000110B ;将字符"1"二进制编码送累加器
ACALL OUT ;调用串行数据输出子程序
SETB P0.5 ;拉高锁存时钟线形成时钟上升沿
NOP
CLR P0.5 ;拉低锁存时钟线形成始终下降沿
NOP
SETB P0.5
NOP
CLR P0.5
ACALL BANK4 ;调用字符扫描位输出控制程序
RET ;返回主程序
BANK4: CLR C ;寄存器C清零
MOV R0,#08H ;寄存器送立即数
MOV A ,#11101111B ;将扫描控制编码送累加器
ACALL OUT ;调用串行数据输出子程序
SETB P0.5 ;拉高锁存时钟线形成时钟上升沿
NOP
CLR P0.5 ;拉低锁存时钟线形成始终下降沿
NOP
SETB P0.5
NOP
CLR P0.5
RET ;返回主程序
LED1: MOV R0,#08H ;寄存器送立即数
MOV A ,#00000001B ;将字符"A."二进制编码送累加器
ACALL OUT ;调用串行数据输出子程序
SETB P0.5 ;拉高锁存时钟线形成时钟上升沿
NOP
CLR P0.5 ;拉低锁存时钟线形成始终下降沿
NOP
SETB P0.5
NOP
CLR P0.5
ACALL LED2 ;调用字符扫描位输出控制程序
RET ;返回主程序
LED2: CLR C ;寄存器C清零
MOV R0,#08H ;寄存器送立即数
MOV A ,#11111011B ;将扫描控制编码送累加器
ACALL OUT ;调用串行数据输出子程序
SETB P0.5 ;拉高锁存时钟线形成时钟上升沿
NOP
CLR P0.5 ;拉低锁存时钟线形成始终下降沿
NOP
SETB P0.5
NOP
CLR P0.5
RET ;返回主程序
LED3: MOV R0,#08H ;寄存器送立即数
MOV A ,#00000110B ;将字符"1"二进制编码送累加器
ACALL OUT ;调用串行数据输出子程序
SETB P0.5 ;拉高锁存时钟线形成时钟上升沿
NOP
CLR P0.5 ;拉低锁存时钟线形成始终下降沿
NOP
SETB P0.5
NOP
CLR P0.5
ACALL LED4 ;调用字符扫描位输出控制程序
RET ;返回主程序
LED4: CLR C ;寄存器C清零
MOV R0,#08H ;寄存器送立即数
MOV A ,#11110111B ;将扫描控制编码送累加器
ACALL OUT ;调用串行数据输出子程序
SETB P0.5 ;拉高锁存时钟线形成时钟上升沿
NOP
CLR P0.5 ;拉低锁存时钟线形成始终下降沿
NOP
SETB P0.5
NOP
CLR P0.5
RET ;返回主程序
OUT: RRC A ;将A中数据进行通过进位位CY的右移
MOV P0.0,C ;将进位位CY的数据送p00做为一位串行数据输出
SETB P0.6 ;拉高移位时钟线形成时钟上升沿
NOP
CLR P0.6 ;拉低移位时钟线形成时钟下降沿
NOP
DJNZ R0,OUT ;检查R0数,据减1不为零则跳转回OUT继续移位
RET ;返回主程序
DELAY: MOV R7,#10
D2: MOV R6,#10
DJNZ R6,$
DJNZ R7,D2
RET
END ;程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -