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

📄 code.asm

📁 信号AD转换程序 信号AD转换程序 内容不多
💻 ASM
字号:
  ORG 0000H
  AJMP MAIN

BIT_CNT DATA 30H
DELAY1 DATA 31H
DELAY DATA 33H
DECIMAL DATA 32H
REC_BUF DATA 20H
SEND_BUF DATA 21H
LEDBuf EQU 40H
State  EQU 41H
D_BUF  EQU 42H
CS  BIT P1.3
CLK BIT P1.2
DIO BIT P1.1
KEY BIT P1.0


MAIN:
    MOV State,#00H

RESET:
      SETB CS
      SETB KEY
      SETB DIO
      MOV DELAY,#25
RST_DELAY1:
      DJNZ DELAY1,RST_DELAY1
      DJNZ DELAY,RST_DELAY1
      MOV SEND_BUF,#10111111B
      CALL SEND
      SETB CS
      MOV SEND_BUF,#10100100B
      CALL SEND
      SETB CS
      ACALL HELLO
;==================================
      ACALL INTKEY
      CLR C                   ;判断键值范围
      MOV A,#08H
      SUBB A,REC_BUF
      JC INTKEY              ;
      MOV A,REC_BUF
      CJNE  A,#08H,NINE
EIGHT:
      ACALL OPEN
      ACALL INTKEY
      CLR C                   ;判断键值范围
      MOV A,#08H
      SUBB A,REC_BUF
      JNC EIGHT
      ACALL STATE_
      MOV A,D_BUF
      JNB ACC.0,D_OPEN
      ACALL OPENED
      ;延时1S
      AJMP EIGHT
D_OPEN:
      MOV SEND_BUF,#80H
      CALL SEND
      MOV A,REC_BUF
      ORL A,#08H
      MOV SEND_BUF,A
      CALL SEND
      SETB CS
      CALL LONG_DELAY
      AJMP EIGHT       
NINE:
      CJNE A,#09H,TEN
      ACALL CLOSE
NINE2:
      ACALL INTKEY
      CLR C                   ;判断键值范围
      MOV A,#08H
      SUBB A,REC_BUF
      JNC NINE2
      ACALL STATE_
      MOV A,D_BUF
      JB ACC.0,D_CLOSE
      ACALL CLOSED
      ;延时1S
      AJMP NINE2
D_CLOSE:
      MOV SEND_BUF,#80H
      CALL SEND
      MOV A,REC_BUF
      ORL A,#08H      
      MOV SEND_BUF,A
      CALL SEND
      SETB CS
      CALL LONG_DELAY
      AJMP NINE2      
TEN:
      CJNE A,#0AH,ELEVEN
      AJMP RESET
     
      MOV SEND_BUF,#80H
      CALL SEND
      MOV A,REC_BUF
      MOV SEND_BUF,A
      CALL SEND
      SETB CS
      CALL LONG_DELAY
;=====================================      
INTKEY:
      JB KEY,INTKEY
      MOV SEND_BUF,#00010101B  ;读键盘数据
      CALL SEND
      CALL RECEIVE
      SETB CS
      JNB KEY,$
      JMP INTKEY
;====================
STATE_:
      MOV R7,#01H             ;判断状态
      MOV A,R7
LOOP1:
      RL A
      DJNZ REC_BUF,LOOP1
      MOV LEDBuf,A
      MOV A,State
LOOP2:
      RR A
      DJNZ REC_BUF,LOOP2
      MOV D_BUF,A
      MOV A,LEDBuf
      XRL State,A      
      RET
;==================================

HELLO:
;================================= DISP "H"
      MOV SEND_BUF,#81H
      CALL SEND
      MOV SEND_BUF,#0CH
      CALL SEND
      SETB CS
;================================= DISP "E"
      MOV SEND_BUF,#82H
      CALL SEND
      MOV SEND_BUF,#0BH
      CALL SEND
      SETB CS
;================================= DISP "L"
      MOV SEND_BUF,#83H
      CALL SEND
      MOV SEND_BUF,#0DH
      CALL SEND
      SETB CS
;================================ DISP "L"
      MOV SEND_BUF,#84H
      CALL SEND
      MOV SEND_BUF,#0DH
      CALL SEND
      SETB CS
;================================= DISP "O"
      MOV SEND_BUF,#85H
      CALL SEND
      MOV SEND_BUF,#0H
      CALL SEND
      SETB CS
;=================================
      RET
OPEN:
;=================================DISP"-"闪烁
      mov SEND_BUF,#10001000h
      call SEND
      mov SEND_BUF,#0feh
      call SEND
      MOV SEND_BUF,#80H
      CALL SEND
      MOV SEND_BUF,#0AH
      CALL SEND
      SETB CS
;=================================DISP"-"
      MOV SEND_BUF,#81H
      CALL SEND
      MOV SEND_BUF,#0AH
      CALL SEND
      SETB CS
;=================================DISP"0"
      MOV SEND_BUF,#82H
      CALL SEND
      MOV SEND_BUF,#00H
      CALL SEND
      SETB CS
;=================================DISP"P"
      MOV SEND_BUF,#83H
      CALL SEND
      MOV SEND_BUF,#0EH
      CALL SEND
      SETB CS
;=================================DISP"E"
      MOV SEND_BUF,#84H
      CALL SEND
      MOV SEND_BUF,#0BH
      CALL SEND
      SETB CS
;=================================DISP"N"
      MOV SEND_BUF,#95H
      CALL SEND
      MOV SEND_BUF,#76H
      CALL SEND
      SETB CS
      RET

OPENED:
;=================================DISP"0"
      MOV SEND_BUF,#80H
      CALL SEND
      MOV SEND_BUF,#00H
      CALL SEND
      SETB CS
;=================================DISP"P"
      MOV SEND_BUF,#81H
      CALL SEND
      MOV SEND_BUF,#0EH
      CALL SEND
      SETB CS
;=================================DISP"E"
      MOV SEND_BUF,#82H
      CALL SEND
      MOV SEND_BUF,#0BH
      CALL SEND
      SETB CS
;=================================DISP"N"
      MOV SEND_BUF,#93H
      CALL SEND
      MOV SEND_BUF,#76H
      CALL SEND
      SETB CS
;=================================DISP"E"
      MOV SEND_BUF,#84H
      CALL SEND
      MOV SEND_BUF,#0BH
      CALL SEND
      SETB CS
;=================================DISP"D"
      MOV SEND_BUF,#0CDH
      CALL SEND
      MOV SEND_BUF,#0DH
      CALL SEND
      SETB CS
      RET
CLOSE:
;=================================DISP"-"闪烁
      mov SEND_BUF,#10001000h
      call SEND
      mov SEND_BUF,#0feh
      call SEND
      MOV SEND_BUF,#80H
      CALL SEND
      MOV SEND_BUF,#0AH
      CALL SEND
      SETB CS
;=================================DISP"C"
      MOV SEND_BUF,#0C9H
      CALL SEND
      MOV SEND_BUF,#0CH
      CALL SEND
      SETB CS
;=================================DISP"L"
      MOV SEND_BUF,#82H
      CALL SEND
      MOV SEND_BUF,#0DH
      CALL SEND
      SETB CS
;=================================DISP"0"
      MOV SEND_BUF,#83H
      CALL SEND
      MOV SEND_BUF,#00H
      CALL SEND
      SETB CS
;================================DISP"S"
      MOV SEND_BUF,#84H
      CALL SEND
      MOV SEND_BUF,#05H
      CALL SEND
      SETB CS
;=================================DISP"E"
      MOV SEND_BUF,#85H
      CALL SEND
      MOV SEND_BUF,#0BH
      CALL SEND
      SETB CS
      RET
CLOSED:
;=================================DISP"C"
      MOV SEND_BUF,#0C8H
      CALL SEND
      MOV SEND_BUF,#0CH
      CALL SEND
      SETB CS
;=================================DISP"L"
      MOV SEND_BUF,#81H
      CALL SEND
      MOV SEND_BUF,#0DH
      CALL SEND
      SETB CS
;=================================DISP"0"
      MOV SEND_BUF,#82H
      CALL SEND
      MOV SEND_BUF,#00H
      CALL SEND
      SETB CS
;================================DISP"S"
      MOV SEND_BUF,#83H
      CALL SEND
      MOV SEND_BUF,#05H
      CALL SEND
      SETB CS
;=================================DISP"E"
      MOV SEND_BUF,#84H
      CALL SEND
      MOV SEND_BUF,#0BH
      CALL SEND
      SETB CS
;=================================DISP"D"
      MOV SEND_BUF,#0CDH
      CALL SEND
      MOV SEND_BUF,#0DH
      CALL SEND
      SETB CS
      RET

SEND:
      MOV BIT_CNT,#8
      CLR CS
      CALL LONG_DELAY
SEND_LP:
      MOV A,SEND_BUF
      RLC A
      MOV SEND_BUF,A
      MOV DIO,C
      NOP
      NOP
      SETB CLK
      CALL SHORT_DELAY
      CLR CLK
      CALL SHORT_DELAY
      DJNZ BIT_CNT,SEND_LP
      CLR DIO
      RET
;=====================
RECEIVE:
      MOV BIT_CNT,#8
     ;SETB DAT
      CALL LONG_DELAY
RECEIVE_LP:
      SETB CLK
      CALL SHORT_DELAY
      setb DIO
      MOV C,DIO
      MOV A,REC_BUF
      RLC A
      MOV REC_BUF,A
      CLR CLK
      CALL SHORT_DELAY
      DJNZ BIT_CNT,RECEIVE_LP
      CLR DIO
      RET

;=====================
LONG_DELAY:                      ;延时25us
      MOV DELAY,#25
      DJNZ DELAY,$
      RET
SHORT_DELAY:                     ;延时4us
      MOV DELAY,#4
      DJNZ DELAY,$
      RET
LLONG_DELAY:
      MOV DELAY,#0FFH
      MOV DELAY1,#0FFH
AAA:  DJNZ DELAY1,AAA
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      DJNZ DELAY,AAA
      RET


 DIO
      RET

;=====================
LONG_DELAY:                      ;延时25us
      MOV DELAY,#25
      DJNZ DELAY,$
      RET
SHORT_DELAY:                     ;延时4us
      MOV DELAY,#4
      DJNZ DELAY,$
      RET
LLONG_DELAY:
      MOV DELAY,#0FFH
      MOV DELAY1,#0FFH
AAA:  DJNZ DELAY1,AAA
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      DJNZ DELAY,AAA
      RET


⌨️ 快捷键说明

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