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

📄 main.asm

📁 信号AD转换程序 信号AD转换程序 内容不多
💻 ASM
字号:
  ORG 0000h
  AJMP START
  ORG 0013h
  AJMP init1
  
  
OUTBIT  EQU 0E101H
CLK164  EQU 0E102H
DAT164  EQU 0E102H
LINE    EQU 0E103H
COLUMN  EQU 0E101H
LEDBuf  EQU 60H

KEYBOARD:
 DB 11H,21H,22H,24H,41H,42H,44H,81H,82H,84H,88H,48H,28H,18H,14H,12H

LEDMap:
  db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
  db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
ADC_LED:
  DB 3FH,3FH,77H,5EH,39H
DAC_LED:
  DB 3FH,3FH,5EH,77H,39H
F_LED:
  DB 3FH,3FH,3FH,3FH,71H
V_LED:
  DB 3FH,3FH,3FH,3FH,3EH        
  


START:
  MOV DPTR,#0E100H
  MOV A,#03H
  MOVX @DPTR,A
  MOV A,#0
  MOV R0,#LEDBuf        ; LED显示缓存空间
  MOV R1,#6             ; LED数量
LOOP1:
  MOV @R0,A             ;置LED缓存全为0
  INC R0
  DJNZ R1,LOOP1
CYCLE:
  ACALL DisplayLED       ;调用显示子程序
  ACALL KS1              ;调用键盘扫描程序
  JZ CYCLE               ;无键,转
  ACALL DisplayLED
  ACALL DisplayLED
  ACALL KS1
  JZ CYCLE
  ACALL KEY
  JZ CYCLE

Delay:                    ; 延时子程序
  MOV R7,#0
DelayLoop:
  DJNZ R7,DelayLoop
  DJNZ R6,DelayLoop
  RET
  
DisplayLED:               ;显示子程序
  MOV R0,#LEDBuf
  MOV R1,#6
  MOV R2,#00100000B
LOOP:
  MOV DPTR,#OUTBIT
  MOV A,#0
  MOVX @DPTR,A
  MOV DPTR,#LEDMap         ;查询LED数值
  MOV A,@R0
  MOVC A,@A+DPTR
  MOV B,#8
DLP:
  RLC A
  MOV R3,A
  MOV ACC.0,C
  ANL A,#0FDH
  MOV DPTR,#DAT164
  MOVX @DPTR,A
  MOV DPTR,#CLK164
  ORL A,#02H
  MOVX @DPTR,A
  ANL A,#0FDH
  MOVX @DPTR,A
  MOV A,R3
  DJNZ B,DLP
  MOV DPTR,#OUTBIT
  MOV A,R2
  MOVX @DPTR,A
  MOV R6,#1
  CALL DELAY
  MOV A,R2
  RR A
  MOV R2,A
  INC R0
  DJNZ R1,LOOP
  MOV DPTR,#OUTBIT
  MOV A,#0
  MOVX @DPTR,A
  RET  






KS1:                      ;扫描键盘子程序
  MOV DPTR,#COLUMN
  MOV A,#00H
  MOVX @DPTR,A
  MOV DPTR,#LINE
  MOVX A,@DPTR
  CPL A
  ANL A,#0FH
  RET

KEY:                      ;键盘输入子程序
  MOV R2,#0FEH
  MOV R4,#4               ;4列
SCAN:
  MOV DPTR,#COLUMN        ;逐列扫描
  MOV A,R2
  MOVX @DPTR,A
  MOV DPTR,#LINE          ;读入行信号
  MOVX A,@DPTR
  ANL A,#0FH              ;屏蔽高四位
  CJNE A,#0FH,NEXT        ;有键输入,转
  MOV A,R2                ;指向下一列
  RL A
  MOV R2,A
  DJNZ R4,SCAN
  AJMP FINISH
NEXT:
  SWAP A                  ;合并行列信号
  MOV R3,A
  MOV A,R2
  ANL A,#0FH
  ORL A,R3
  CPL A                   ;行列信号逐位取反
  MOV R3,A                ;暂存
  MOV R2,#0
  MOV DPTR,#KEYBOARD
FINDKEY:                  ;查找键值
  MOV A,R2
  MOVC A,@A+DPTR
  CLR C
  SUBB A,R3
  JNZ NEXT1
  MOV R0,#LEDBuf+5
  MOV A,R2
  MOV @R0,A
  AJMP FINISH
NEXT1:
  INC R2
  SJMP FINDKEY

FINISH:
  CLR C
  MOV A,R2
  MOV R4,#08H
  SUBB A,R4
  JC KS2
  MOV A,R2
  MOV R4,#0AH
  CLR C
  SUBB A,R4
  JNC KS3
  CJNE R2,#08H,ENDP
  ACALL KS4
  AJMP ENDP
KS2:
  MOV R0,#LEDBuf
  MOV DPTR,#ADC_LED
  MOV R4,#00H
  MOV R6,#5
NEXT2:  
  MOV A,R4
  MOVC A,@A+DPTR
  MOV @R0,A
  INC R0
  DJNZ R6,NEXT2
  ACALL ADC
  AJMP ENDP
KS3:
  MOV R0,#LEDBuf
  MOV DPTR,#DAC_LED
  MOV R4,#00H
  MOV R6,#5
NEXT3:  
  MOV A,R4
  MOVC A,@A+DPTR
  MOV @R0,A
  INC R0
  DJNZ R6,NEXT3
 ; ACALL FANDV
  AJMP ENDP
KS4:
  MOV R0,#LEDBuf
  MOV DPTR,#DAC_LED
  MOV R4,#00H
  MOV R6,#5
NEXT4:  
  MOV A,R4
  MOVC A,@A+DPTR
  MOV @R0,A
  INC R0
  DJNZ R6,NEXT4
  ACALL DAC
  AJMP ENDP
ENDP:
  ACALL DisplayLED
  ACALL KS1
  JNZ ENDP
  RET


 
ADC:
      setb it1  ;设置中断服务
      setb ea
      setb ex1
      mov dptr,#0a000h
cyc1:
      mov a,dpl
      MOV 06H,R2
      cjne a,06H,adddpl
      movx @dptr,a
      push dpl
      push dph
      ajmp ad2
adddpl:
      inc dptr
      ajmp cyc1      
ad2:
      sjmp $
      ret
init1:
      pop dph
      pop dpl
      movx a,@dptr
      mov p1,a
      movx @dptr,a      
      mov dptr,#0b000h
      movx @dptr,a
      reti

⌨️ 快捷键说明

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