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

📄 周.txt

📁 此为AD、DA和单片机之间的编译代码
💻 TXT
字号:
  ORG 0000H
          LJMP START
         
CLEARMEMIO:MOV A,#0FFH    ;复位
           MOV P3,A
           CLR A
           MOV R0,#70H     ;将70H-73H清零
           MOV R2,#04H
   LOOPMEM:MOV @R0,A
           INC R0
           DJNZ R2,LOOPMEM
           MOV A,#0FFH     ;将P0-P2口复位
           MOV P0,A
           MOV P1,A
           MOV P2,A
           RET
                   
     START:LCALL CLEARMEMIO      ;主程序
      MAIN:ACALL MOVD            ;调用A/D采集数据
           ACALL DAC0832         ;D/A转换
           AJMP MAIN
           NOP
           NOP
           NOP
           LJMP START
           
   ;将采集来的数据转换为BCD码
DISPLAY:MOV R0,#73H
  DISLOOP1:MOV A,@R0
           MOV B,#100 
           DIV AB
           MOV 70H,A    ;百位存于70H
           MOV A,#10
           XCH A,B
           DIV AB
           MOV 71H,A    ;十位存于71H
           MOV 72H,B    ;个位存于72H
           MOV R2,#0FH
  DISLOOP2:LCALL DISP
           DJNZ R2,DISLOOP2 ; 如果显示时间还不够长可以改变这里以增长时间
           LJMP MOVD
      ;动态点亮数码管               
   DISP:MOV A,#0FFH
        MOV P0,A        ;P0口复位
        MOV P2,A        ;P2口复位
   PLAY:MOV R1,#70H
        MOV R3,#0EFH    ;位控码送至R3
        MOV A,R3
   LD0: MOV P2,A
        MOV A,@R1
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P0,A
        ACALL DELAY
        INC R1
        MOV A,R3
        JNB ACC.7,ENDOUT
        RL A
        MOV R3,A 
        AJMP LD0
 ENDOUT:MOV 50H,#0FH  ;通过改变这里可以改变保持一个数据显示时间的长短 
        DJNZ 50H,MM   ;从而也就影响了采集数据的时间间隔
        RET
     MM:AJMP MOVD
 ;延时    
DELAY:  MOV R5,#10
DELAY1: MOV R6,#10;0
DELAY2: MOV R7,#20;48 
DELAY3: DJNZ  R7,DELAY3
        DJNZ  R6,DELAY2
        DJNZ  R5,DELAY1
        RET
 TAB:   DB 0C0H,0F9H,0A4H,0B0H,99H
        DB 92H,82H,0F8H,80H,90H
       ;A/D采集数据
      MOVD:MOV R0,#73H   
           MOV A,#00H
           CLR P3.1
           CLR P3.6
           NOP
           SETB P3.6
           SETB P3.1
           CLR P3.1
           CLR P3.7
           NOP
           MOV P1,#07FH
           MOV A,P1
           SETB P3.7
           SETB P3.1
      ;以下是将AD进来的00H~FFH转换为00H~64H  默认使用第0工作寄存器组
ZHUANHUAN:  MOV  B,#64H                         
            MUL  AB                           ;方法为A*64/FF
            MOV  R3,B
            MOV  R2,A                         ;A*64,积高8位送R3,低8位送R2
            MOV  B,#08H                       ;比较法求商比较次数送B
     LOOP:  CLR  C                            ;CY清零
            MOV  A,R2                         ;R2循环左移,低位补零,形成CY
            RLC  A
            MOV  R2,A
            MOV  A,R3                           ;R3循环左移
            RLC  A
            MOV  R3,A
            MOV  PSW.5,C                        ;R3R2的最高位送F0
            CLR  C
            SUBB A,#0FFH                        ;R3-0FFH
            JB   PSW.5,LOOP1                    ;若够减,商1
            JC   LOOP2                          ;若不够减,R3R2继续循环左移       
    LOOP1:  MOV  R3,A                           ;余数放在R3
            INC  R2                             ;商放在R2
    LOOP2:  DJNZ B,LOOP                         ;若除法未完,则继续执行除法
            CLR  PSW.5                          ;除法完成,F0清零
            MOV  B,#64H                        
            MOV  A,R2 
            MOV 73H,A                          
            LCALL DISPLAY
            RET
DAC0832:MOV A,#66H     ;送键盘指令值
        CJNE A,73H,SB  ;与上一时刻温度作比较
        MOV A,#7FH     ;相等不作任何处理
        MOV P1,A
        CLR P3.0
        NOP 
        CLR P3.6
        AJMP MAIN
SB: JNC SB1             ;若高于原始值,加温
        AJMP SB2            ;否则减温
SB1:MOV A,#0FFh        
        MOV P1,A
        CLR P3.0
        NOP
        CLR P3.6
        AJMP MAIN
SB2:MOV A,#00h 
        MOV P1,A
        CLR P3.0
        NOP
        CLR P3.6
        AJMP MAIN    
        END           

⌨️ 快捷键说明

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