⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ind.asm

📁 两只74hc595串入并出驱动两位数码管以及16只led
💻 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 + -