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

📄 adc_voltage.asm

📁 一个电压转换的程序,实现对模拟量的采集和控制,在系统中反馈
💻 ASM
字号:
;    **************************
;            数据采集系统
;    **************************

;    **************************
;          AD转换伪定义
;    **************************
     P1_ADC_EN EQU 97H     
     ADC_CONTR EQU 0C5H
     ADC_DATA  EQU 0C6H
     RAM       EQU 30H
       

;    **************************
;            初始化
;      主程序入口和子程序入口
;    **************************
       ORG    0000H
       LJMP   START 
START: LCALL DL1S
       MOV  P1_ADC_EN,#80H 
       CLR A               ;初始化 
       MOV R0,#70H
       MOV R2,#02H
       MOV  P1,#0FFH       
       
CLEAR: MOV @R0,A
       INC R0
       DJNZ R2,CLEAR
MAIN:      
       LCALL  ADSTART
       LCALL  V_SHOW
       LJMP   MAIN



;    **************************
;            AD转换
;    **************************
ADSTART: 
      MOV  ADC_DATA,#00H  ;给结果转换寄存器赋值
      MOV  ADC_CONTR,#07H
      LCALL DL1MS
      ORL  ADC_CONTR,#08H 
AD:   MOV  A,ADC_CONTR    
      JNB  ACC.4,AD
      MOV  A,ADC_DATA     
      MOV  RAM,A
      MOV  A,ADC_CONTR
      CLR  ACC.3
      MOV  ADC_CONTR,A 
      MOV  A,RAM
      MOV  B,#20H
      MUL  AB
      MOV  12H,A          ;存低八位
      MOV  11H,B          ;存高八位
      
      RET

;    **************************
;          除法子程序
;    **************************
DIVIDE: MOV R1, 11H      ;入口条件R0为高位,R1为低位,R2被除数扩充位
        MOV R0, 12H
        MOV R2, #00H
        MOV R3, #1AH     ;除数
        MOV R4, #00H     ;出口条件,商数存放,R4为低位,余数在R2中
        MOV R5, #00H
        MOV R7, #16      
CHU5:   MOV    A,    R0
        RLC    A
        MOV    R0,   A
        MOV    A,    R1
        RLC    A
        MOV    R1,   A
        MOV    A,    R2
        RLC    A
        MOV    R2,   A
        MOV    A,    R4         ;商数左移
        RLC    A
        MOV    R4,   A
        MOV    A,    R5
        RLC    A
        MOV    R5,   A
        CJNE   R2,   #1AH,    LOOP0
LOOP0:  JC     LOOP1
        MOV    A,    R2;     建立新的余数
        SUBB   A,    R3
        MOV    R2,   A
        MOV    A,    R4
        ADD    A,    #01H
        MOV    R4,   A
        MOV    A,    R5
        ADDC   A,    #00H
        MOV    R5,   A
LOOP1:  DJNZ   R7,   CHU5
        RET

;    **************************
;      双字节转十进制BCD码
;    **************************
BCD:       MOV  A,R4       ;BCD码转换
           MOV  R3,A
           MOV  A,R5
           MOV  R2,A
           CLR  A                               
           MOV  R4,A                  
           MOV  R5,A                  
           MOV  R6,A                              
           MOV  R7,#10H                        

IBTL2:                                                      
           CLR   C                               
           MOV   A,R3                              
           RLC   A                                    
           MOV   R3,A                              

           MOV   A,R2                              
           RLC   A                                    
           MOV   R2,A                              

           MOV   A,R6
           ADDC  A,R6
           DA    A
           MOV   R6,A

           MOV   A,R5        ;R6存低八位,R5存高八位
           ADDC  A,R5
           DA    A
           MOV   R5,A

           MOV   A,R4
           ADDC  A,R4
           DA    A      
           MOV   R4,A
           DJNZ  R7,IBTL2     
	   RET

;    **************************
;           显示程序
;    **************************	   
V_SHOW:    LCALL DIVIDE
           LCALL BCD                   
           MOV  A,R5
           ANL  A,#0FH
	   MOV  70H,A
	   MOV  A,R6
	   SWAP A
	   ANL  A,#0FH
	   MOV  71H,A
	   MOV  A,R6
	   ANL  A,#0FH
	   MOV  72H,A
           MOV  R3,#0FFH  ;显示延时
DISLOOP: 
      LCALL SHOW
      DJNZ  R3,DISLOOP
      RET

SHOW: 
      MOV  A,#0FDH
      MOV  R0,#70H
DISP: MOV  P0,#0FFH
      MOV  P2,A
      MOV  A,@R0
      MOV  DPTR,#TAB
      MOVC A,@A+DPTR
      MOV  20H,P2
      JNB  01H,DISLOOP1
DISLOOP2:      
      MOV   P0,A
      LCALL DL1MS
      INC   R0
      MOV   A,P2
      JNB   ACC.3,DISLOOP0
      RL    A
      AJMP  DISP

DISLOOP1:  
           CLR  ACC.7
           LJMP DISLOOP2 
DISLOOP0:  RET



;    **************************
;            延时程序
;    **************************	
DL1S: MOV  R5,#40         ;延时1秒子程序
DL0:  MOV  R6,#10
DL1:  MOV  R7,#10
DL2:  DJNZ R7,DL2
      DJNZ R6,DL1
      DJNZ R5,DL0
      RET
DL1MS:MOV  R6,#14H      ;延时1毫秒
DL3:  MOV  R7,#19H
DL4:  DJNZ R7,DL4
      DJNZ R6,DL3
      RET


;    **************************
;          共阳极段码查表
;    **************************	       
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H
     DB 92H,82H,0F8H,80H,90H,0FFH
	  END

    

⌨️ 快捷键说明

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