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

📄 aaa.asm

📁 串行通讯应用于电子号码锁.实现在单片机控制下综合实现本实验要求的串行通讯应用于电子号码锁技术。
💻 ASM
字号:
 ORG 00H
LJMP START
START:MOV SP,#60H                
      MOV SCON,#50H             ;设置串行口工作方式为方式1
      MOV TMOD,#20H             ;设置波特率为2400
      MOV TH1,#0F3H
      MOV TL1,#0F3H
      SETB TR1
ST:  MOV R4,#06H                ;设置数码管地址为31H到35H
     MOV R0,#30H
CLEAR:MOV @R0,#00H              ;数码管初始显示为0
      INC R0
      DJNZ R4,CLEAR
SCAN0:MOV R3,#0F7H              ;设置扫描初始值(令P13=0)
SCAN: JBC RI,UART               ;判断RI=1?是,接收中断,跳转到接收子程序
      CALL DISP                  ;否则,则调用显示
      MOV R1,#00H
SCAN1:MOV A,R3                    ;扫描值存入累加器中
      MOV P1,A                    ;将扫描送到P1口
      MOV A,P1                    
      MOV R4,A                    ;将P1口数据存入R4,以备比较使用
      SETB C                      ;置位进位
      MOV R5,#04H                 ;扫描四列
L1:   RLC A                       ;带进位左移一位,扫描下一列
      JNC KEYIN                   ;C=0?是,扫描完毕跳到KEYIN
      INC R1                      ;取码指针加1
      DJNZ R5,L1                  ;实现列的扫描
      MOV A,R3                    ;重新赋值
      SETB C                      ;置位进位C
      RRC A                       ;带进位右移一位
      MOV R3,A                    
      JC SCAN1                    ;扫描行
      LJMP SCAN0
KEYIN:MOV R7,#10
D2:   MOV R6,#248                ;延时
      DJNZ R6,$
      DJNZ R7,D2
D3:   MOV A,P1                 ;判断按键是否松开
      XRL A,R4
      JZ D3
      MOV A,R1
      MOV DPTR,#TABLE          ;到TABLE中取值
      MOVC A,@A+DPTR
	   ADD A,#30H              ;转换成ASCII码
      MOV SBUF,A               ;送至PC机
      SUBB A,#30H              ;还原为数字
	  MOV R7,A                  ;将送出的数据,在数码管上显示
	  LCALL L4
      LJMP SCAN0
UART: MOV A,SBUF               ;接收子程序
      SUBB A,#30H
		MOV R7,A
	    CALL L4
      CLR RI
      LJMP SCAN
L4:	MOV A,R7                ;不是,则为数字建
      XCH A,30H             ; ; 现按键值存入(30H)
      XCH A,31H             ; ;旧(30H)值存入(31H)    
      XCH A,32H               ;旧(31H)值存入(32H)
      XCH A,33H               ;旧(32H)值存入(33H)
      XCH A,34H               ;旧(33H)值存入(34H)   
      XCH A,35H               ;旧(34H)值存入(35H)
      LCALL DISP              ;调用显示子程序  
       RET                    
DISP:   MOV A,35H                        
        ADD A,#50H            ;D6数据值加上74LS138扫描值         
        MOV P0,A              ;显示D6    
        LCALL DELAY1          ;扫描延时          
        MOV A,34H                             
        ADD A,#40H            ;D5数据值加上74LS138扫描值       
        MOV P0,A              ;显示D5      
        LCALL DELAY1          ;扫描延时       
        MOV A,33H                     
        ADD A,#30H            ;D4数据值加上74LS138扫描值   
        MOV P0,A              ;显示D4      
        LCALL DELAY1          ;扫描延时        
        MOV A,32H                        
        ADD A,#20H            ;D3数据值加上74LS138扫描值     
        MOV P0,A              ;显示D3      
        LCALL DELAY1          ;扫描延时      
        MOV A,31H                        
        ADD A,#10H            ;D2数据值加上74LS138扫描值      
        MOV P0,A              ;显示D2      
        LCALL DELAY1          ;扫描延时        
        MOV A,30H                       
        ADD A,#00H            ;D1数据值加上74LS138扫描值         
        MOV P0,A              ;显示D1         
        LCALL DELAY1         ;扫描延时     
        RET
DELAY1:  MOV R7,#06          ;显示器扫描时间              
D11:     MOV R6,#10                          
        DJNZ R6,$                         
        DJNZ R7,D11                        
        RET          
TABLE:DB 01H,02H,03H,04H         ;定义外部键盘的值
      DB 05H,06H,07H,08H
      DB 09H,0AH,0BH,0CH
      DB 0DH,0EH,0FH,00H
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -