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

📄 wodechengxu.asm.txt

📁 温度的测量
💻 TXT
字号:
;-------------------------          ;定义变量    
COMBCD_H    EQU    50H              ;压缩BCD码存放在50H,51H中
COMBCD_L    EQU    51H
BCD_1       EQU    52H
BCD_2       EQU    53H
BCD_3       EQU    54H
BCD_4       EQU    55H              ;非压缩BCD码分别存放在52H,53H,54H,55H中
;----------
8155_COM    EQU     0900H           ;分配内存资源
8155_A      EQU     0901H
8155_B      EQU     0902H
8155_C      EQU     0903H
8155_TL     EQU     0904H
8155_TH     EQU     0905H           ;分配8155的内存资源
;----------
8279_DATA   EQU     0E00H
8279_COM    EQU     0E01H
;----------
7109_L      EQU     0D02H
7109_H      EQU     0D01H           ;分配ICL7109的内存资源
;-------------------------
            ORG   0000H
            JMP   START

;--------------------
            ORG  0050H              ;主程序
START:
            LCALL   INITIA_SUB
MAIN_LOOP:
            LCALL   ADC_SUB         ;A/D转换子程序
            LCALL   BIN-TO-BCD      ;二进制转换位十进制子程序
            LCALL   DISPLAY_SUB     ;显示子程序 
            LCALL   DELAY_SUB       ;延时子程序
            JMP     MAIN_LOOP
;--------------------               ;初始化子程序
INITIA_SUB:  ;8155-INITIA---------
             MOV    DPTR,#8155_COM
             MOV    A,#01001100b    ;写入8155的命令字,A,B口为输出口,停止定时器计数 
             MOVX   @DPTR,A
             MOV    DPTR ,#8155_C
             MOV    A,#00H
             MOVX   @DPTR,A         ;清C口,启动8155
             ;------------
             ;8279-INITIA---------  ;8279初始化
             MOV    DPTR,#8279_COM
             MOV    A,#00H          ;8字符显示,左入口       
             MOVX   @DPTR,A
             MOV    A,#2AH          ;十分频
             MOVX   @DPTR,A 
             MOV    A,#0D1H         ;清显示RAM
             MOVX   @DPTR,A
  LP1:       MOVX   A,@DPTR
             JB     ACC.7,LP1       ;判断是否清除完毕
             MOV    A,#10010000b    ;写显示RAM,写后地址自动增1
             MOVX   @DPTR,A
             ;------------
             ;4051-INITIA----       ;CD4051初始化
             MOV DPTR,#0903H
             MOV 24H,#10H
             MOV A,24H
             MOVX @DPTR,A           ;温度测量选择通道CH0,由8155C口控制
             MOV DPTR,#0A00H 
             MOV A,#44H
             MOVX @DPTR,A           ;显示RAM命令字
             ;---------- 
             ;ICL7109-INITIA---     ;ICL7109初始化
             MOV DPTR,#0904H
             MOV A,#40H             ;设置A/D时钟为500KHZ
             MOVX @DPTR,A
             ;------------
             SETB  P3.4             
             RET
;--------------------
   ADC_SUB: JB     P3.4 ,$          ;循环等待A/D转换结束
            MOV    R0,#5FH
            DJNZ   R0,$             ;延时
            MOV    R0,#30H
            MOV    DPTR,#0D02H
            MOVX   A, @DPTR
            MOV    @R0,A            ;A/D转换结果低八位存入30H 
            INC    R0
            MOV    DPTR,#0D01H
            MOVX   A,@DPTR          
            ANL    A,#0FH
            MOV    @R0,A            ;A/D转换结果高四位存入31H           
            RET
;----
;BIN-TO-BCD的入口为30H和31H--------;二进制转换为BCD
BIN-TO-BCD: MOV    R0,#30H
            MOV    A,@R0
            MOV    R3,A
            INC    R0
            MOV    A,@R0
            MOV    R2,A
            ;----------
            CLR    A
            MOV    R6,A
            MOV    R5,A
            MOV    R4,A
            MOV    R7,#16
     LOOP:
            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
            ADDC   A,R5
            DA     A
            MOV    R5,A
            MOV    A,R4
            ADDC   A,R4
            DA     A
            MOV    R4,A
            DJNZ   R7,LOOP             ;压缩BCD码转换为非压缩BCD码
            ; ----------------
            MOV    COMBCD_H,R5         ;COMBCD_H存放高位
            MOV    COMBCD_L,R6         ;COMBCD_L存放低位
            MOV    A,COMBCD_H
            MOV    R0,#BCD_2
            MOV    @R0,A               ;压缩BCD码的高字节放在BCD-2中
            SWAP   A                   ;压缩BCD码高字节的低四位和高四位对调
            MOV    R7,A                ;结果先放在R7中保存
            MOV    A,@R0                   
            ANL    A,#0FH              ;屏蔽高字节的高四位
            MOV    @R0,A               ;高字节的低四位转换的非压缩BCD码放在BCD-2中
            MOV    A,R7
            MOV    R1,#BCD_1
            ANL    A,#0FH              
            MOV    @R1,A               ;高字节的高四位转换的非压缩BCD码放在BCD-1中
            MOV    A,COMBCD_L          
            MOV    R0,#BCD_4
            MOV    @R0,A               ;压缩BCD码的低字节放在BCD-4中
            SWAP   A                   ;压缩BCD码低字节的低四位和高四位对调    
            MOV    R7,A                ;结果先放在R7中保存
            MOV    A,@R0
            ANL    A,#0FH              ;屏蔽低字节的高四位
            MOV    @R0,A               ;低字节的低四位转换的非压缩BCD码放在BCD-4中     
            MOV    A,R7
            ANL    A,#0FH              
            MOV    R1,#BCD_3
            MOV    @R1,A               ;低字节的高四位转换的非压缩BCD码放在BCD-3中      
            RET                        ;压缩BCD码转换为非压缩BCD码从高到低依次存在52H,53H,54H,55H
  
;--------------------------------------;显示子程序
DISPLAY_SUB:MOV    DPTR,#8279_COM
            MOV    A,#90H
            MOVX   @DPTR,A
            MOV    DPTR,#8279_DATA
            MOV    A,#00H
            MOVX   @DPTR,A             ;启动8279
            MOV    R2,#4               ;设置显示位数
            MOV    R0,#52H             ;把要显示的数字的最高位放在R0中
            MOV    DPTR,#8279_DATA   

DISPLAY_loop1: MOV    A,@R0          
            PUSH   DPH
            PUSH   DPL
            MOV    DPTR,#TAB 
            MOVC   A,@A+DPTR         ;查显示的字符表     
            POP    DPL
            POP    DPH
            CJNE   R2,#02H,LOP       ;判断是否循环到第三位
            ADD    A,#80H            ;第三位后面显示小数点
    LOP:    MOVX   @DPTR,A
            INC    R0
            DJNZ   R2,DISPLAY_loop1  ;判断要显示的四位是否显示完毕
            MOV    A,#39H            ;显示摄氏符号C
            MOVX   @DPTR,A
            RET


;-----------------------------------
TAB:        DB     3FH,06H,5BH,4FH,66H,6DH,  ;显示的字符表,依次为0,1,2,3,4,5,6,7,8,9
            DB     7DH,07H,7FH,6FH
;-----------------------------------

DELAY_SUB: 
          MOV R5,#0FH                ;延时
DELAYLP1: MOV R6,#0FH         
DELAYLP2:
          NOP
          NOP
          DJNZ   R6,DELAYLP2
          DJNZ   R5,DELAYLP1      
          RET                     

END                                  ;结束

⌨️ 快捷键说明

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