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

📄 bc7281改.asm

📁 基于ATmega16的BC7281键盘显示源码,拿过来就 可以用
💻 ASM
字号:
BIT_COUNT DATA 06FH
TIMER     DATA 06EH
TIMER1    DATA 06DH
TEMP      DATA 06CH
DATA_IN   DATA 02FH
DATA_OUT  DATA 02EH
CLK       BIT  P1.1
DAT       BIT  P1.0
KEY       BIT  P3.2
    
       ORG   0000H
       SJMP MAIN
       ORG 0003H
       LJMP JIANPAN
       
       
       ORG 0010H
 MAIN: MOV SP,#70H
       MOV IE,#81H
       
       MOV R0,#47H
       MOV R1,#08H
       clr a
  BACK:MOV @R0,A
       DEC R0
       DJNZ R1,BACK
      ; inc r0  //40h
  
            MOV TIMER,#50 
START_DELAY:MOV TIMER1,#255
START_DELAY1:DJNZ TIMER1,START_DELAY1
             DJNZ TIMER,START_DELAY
             MOV DATA_OUT,#12H
             LCALL SEND
             MOV DATA_OUT,#80H
             LCALL SEND
             lcall start
             sjmp $
             lcall JIANPAN
       
             
    START: MOV DATA_OUT,#15H
           LCALL SEND 
                           ;/ HEX译码指令          /
           
           
                         ;/ 开始时40H-47H全显示零,按下一键值从40H开始显示               /
           MOV A,40H
           SWAP A
           ADD A,#00H
           SWAP A
           MOV DATA_OUT,A
           LCALL SEND
    
      MOV DATA_OUT,#15H
      LCALL SEND
      MOV A,41H
      SWAP A
      ADD A,#01H
      SWAP A
      MOV DATA_OUT,A
      LCALL SEND
    
    MOV DATA_OUT,#15H
    LCALL SEND
    MOV A,42H
    SWAP A
    ADD A,#02H
    SWAP A
    MOV DATA_OUT,A
    LCALL SEND
    
    MOV DATA_OUT,#15H
    LCALL SEND
    MOV A,43H
    SWAP A
    ADD A,#03H
    SWAP A
    MOV DATA_OUT,A
    LCALL SEND
    
    MOV DATA_OUT,#15H
    LCALL SEND
    MOV A,44H
    SWAP A
    ADD A,#04H
    SWAP A
    MOV DATA_OUT,A
    LCALL SEND
    
    MOV DATA_OUT,#15H
    LCALL SEND
    MOV A,45H
    SWAP A
    ADD A,#05H
    SWAP A
    MOV DATA_OUT,A
    LCALL SEND
    
    MOV DATA_OUT,#15H
    LCALL SEND
    MOV A,46H
    SWAP A
    ADD A,#06H
    SWAP A
    MOV DATA_OUT,A
    LCALL SEND
    
    MOV DATA_OUT,#15H
    LCALL SEND
    MOV A,47H
    SWAP A
    ADD A,#07H
    SWAP A
    MOV DATA_OUT,A
    LCALL SEND
       ret
    
SEND:MOV IE,#00H
WAAIT1:CLR CLK
       SETB CLK
       JB DAT,WAAIT1
       CLR CLK
       SETB CLK
WAIT2:JNB DAT,WAIT2
      MOV BIT_COUNT,#8
SEND_LOOP:MOV C,DATA_OUT.7
          MOV DAT,C
       CLR CLK
       SETB CLK
       MOV A,DATA_OUT
       RL A
       MOV DATA_OUT,A
       NOP
       NOP
       NOP
   
       DJNZ BIT_COUNT,SEND_LOOP
       SETB DAT
       MOV IE,#81H
       RET
       
RECEIVE:MOV IE,#00H
        CLR CLK
       SETB CLK
WAIT3:JB DAT,WAIT3
      CLR CLK
       SETB CLK
       MOV BIT_COUNT,#8
RECV_LOOP:NOP
          NOP
          NOP
          NOP
          NOP
          NOP
          NOP
          NOP
          MOV A,DATA_IN
          MOV C,DAT
          RLC A
          MOV DATA_IN,A
          CLR CLK
       SETB CLK
          DJNZ BIT_COUNT,RECV_LOOP
          MOV IE,#81H
          RET
          
          ORG 0A00H
JIANPAN: NOP
         MOV DATA_OUT,#93H
         LCALL SEND
         LCALL RECEIVE      
         MOV @R0,DATA_IN
          lcall start  ;?????
         INC R0
         CJNE R0,#48H,CONTINUE
         MOV R0,#40H
         
 CONTINUE: NOP
           RETI
           END        


 

⌨️ 快捷键说明

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