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

📄 ledyy.asm

📁 汇编语言的LED阵的操作
💻 ASM
字号:
               WR1     BIT     P3.6
               RD1     BIT     P3.7
               CS1     BIT     P1.5
               CS3     BIT     P1.6
               CS2     BIT     P1.7
               A16     BIT     P3.0
               BIT_CNT DATA 30H
               DELAY1 DATA 31H
               REC_BUF DATA 20H
               SEND_BUF DATA 21H
               CS BIT P1.1
               CLK BIT P1.2
               DIO BIT P1.3
               KEY BIT P3.2
               ORG     0000H
               LJMP    MAIN
               ORG     0003H
               LJMP    MAIN_LP
               ORG     0013H
               LJMP    STA_RAM
               ORG     0100H
       MAIN:   SETB  EA
               SETB  EX0
               SETB  EX1
               SETB  INT1
               MOV     IP,#04H
               CLR      IT0
               CLR      IT1
               MOV   DPTR,#00H
               SETB CS
               SETB KEY
               SETB DIO
               MOV DELAY1,#25 ;延时25MS
               RST_DELAY1:
               DJNZ DELAY1,RST_DELAY1
               MOV SEND_BUF,#10100100B ;初始化命令           
               LCALL SEND                                       
               SETB CS
               SJMP $


     MAIN_LP:  MOV SEND_BUF,#10111111B
               LCALL SEND
               SETB   CS
               MOV SEND_BUF,#00010101B ;有键按下,发送读键盘命令
               LCALL SEND
               LCALL RECEIVE ;读键盘
               SETB CS
               MOV  A,REC_BUF
               MOV  SEND_BUF,#10000000B
               LCALL SEND
               MOV  SEND_BUF,REC_BUF
               LCALL SEND
               SETB  CS
    MAIN_LP2:
               JNB KEY,MAIN_LP2  ;等待键松开.
               CJNE A,#01H,START              ;1键录音
               CJNE A,#02H,STA_DAC            ;2键播放
               RETI
       START:  MOV   P0,#00H
               CLR      CS1
               CLR      WR1
               NOP
               SETB     CS1
               SETB     WR1
               MOV   P0,#0FFH
               SJMP     $
     STA_RAM:  CLR      CS1
               CLR      RD
               MOV  A,P0
               NOP
               SETB     CS1
               SETB     RD
               CLR      CS3
               MOVX  @DPTR,A
               INC  DPTR
               SETB     CS3
               JNB   A16,KRAM
               MOV  A,DPL
               CJNE A,#0FFH,NEXT
               MOV  A,DPH
               CJNE A,#0FFH,NEXT
               CLR  A16
               MOV  DPTR,#00H
       KRAM:   MOV  A,DPL
               CJNE A,#0FFH,NEXT
               MOV  A,DPH
               CJNE A,#0FFH,NEXT
               MOV  DPTR,#00H
               SETB A16
               RETI
       NEXT:   MOV   P0,#00H
               CLR      CS1
               CLR      WR1
               NOP
               SETB     CS1
               SETB     WR1
               MOV   P0,#0FFH
               RETI
      STA_DAC: CLR      CS3
               SETB     WR1
               MOVX  A,@DPTR
               SETB     CS3
               CLR      WR1
               CLR      CS2
               MOV  P0,A
               NOP
               NOP
               SETB     CS2
               SETB     WR1
               INC   DPTR
               JNB   A16,KRAM1
               MOV  A,DPL
               CJNE A,#0FFH,STA_DAC
               MOV  A,DPH
               CJNE A,#0FFH,STA_DAC
               CLR  A16
               MOV  DPTR,#00H
       KRAM1:  MOV  A,DPL
               CJNE A,#0FFH,STA_DAC
               MOV  A,DPH
               CJNE A,#0FFH,STA_DAC
               MOV  DPTR,#00H
               RET


     SEND:
                MOV BIT_CNT,#8 ;设发送位数为8 位.
                CLR CS
                LCALL LONG_DELAY ;延时50 微秒.
     SEND_LP:
                MOV A,SEND_BUF
                RLC A
                MOV SEND_BUF,A
                MOV DIO,C
                NOP
                NOP
                SETB CLK
                LCALL SHORT_DELAY ;延时10 微秒.
                CLR CLK
                LCALL SHORT_DELAY ;延时10 微秒.
                DJNZ BIT_CNT,SEND_LP
                CLR DIO
                RET
                ;-------------------------------------
                ;由zlg7289A 接收一字节数据,高位在前
                ;-------------------------------------
     RECEIVE:
                MOV BIT_CNT,#8 ;定义接收8 位.
                SETB DIO
                LCALL LONG_DELAY ;延时50 微秒.
  RECEIVE_LP:
                SETB CLK
                LCALL SHORT_DELAY ;延时10 微秒.
                MOV C,DIO ;接收数据送REC_BUF 低位.
                MOV A,REC_BUF
                RLC A
                MOV REC_BUF,A
                CLR CLK
                LCALL SHORT_DELAY ;延时10 微秒.
                DJNZ BIT_CNT,RECEIVE_LP
                CLR DIO
                RET
  LONG_DELAY:
                MOV DELAY1,#25
                DJNZ DELAY1,$
                RET
 SHORT_DELAY:
                MOV DELAY1,#4
                DJNZ DELAY1,$
                RET
                END

⌨️ 快捷键说明

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