单片机实验-A/D和D/A转换

ORG     0000H 
DATAR0  EQU     50H         ;定义保存采集现场数据单元 
        LJMP    MAIN 
        ORG     000BH       ;定义定时/计数器 T0 中断入口地址 
        LJMP    T0P 
        ORG     0100H 
MAIN :  MOV     SP , #60H    ;设置中断指针 
        MOV     TMOD,#01H   ;设置定时/计数器 T0 为工作方式 1、定时 
        MOV     TL0 ,#0D0H  ;设置定时常数 
        MOV     TH0 ,#80H 
        SETB    TR0         ;开启定时/计数器 T0 
        SETB    ET0         ;打开定时/计数器 T0 中断允许开关 
        SETB    EA          ;打开总开关 
        MOV     DPTR,#3000H  ;设置第三通道地址                   
        MOVX    @DPTR,A     ;启动第三通道转换       
LOOP:   LCALL   DATA1 
        LCALL   DISPLAY 
        SJMP    LOOP 
T0P:    MOV    TL0,#0D0H    ;重新设置定时常数 
        MOV    TH0,#80H 
        MOV    DPTR,#3000H  ;将第三通道地址送 DPTR 
        MOVX   A,@DPTR      ;读取转换值 
        MOV    DATAR0,A     ;保留转换值 
        MOVX   @DPTR,A      ;重启第三通道转换 
        RETI 
        DATA1:              ;显示格式转换子程序 
        MOV     79H,#03H 
        MOV     7AH,#11H 
        MOV     A,DATAR0 
        ANL     A,#0F0H 
        SWAP    A 
        MOV     7BH,A 
        MOV     A,DATAR0 
        ANL     A,#0FH 
        MOV     7CH,A             
        RET        
DISPLAY:                  
      MOV    R0,#79H       ;显示缓冲区首地址送 R0 
      MOV    R3,#01H       ;字位码送 R3 保存 
      MOV    A,R3 
LD0:  MOV    P2,A          ;字位码送位码端口 P2,点亮该位 
      MOV    A,@R0         ;取出一位要显示的数据 
      MOV    DPTR,#TAB1    ;表首地址送 DPTR 
      MOVC   A,@A+DPTR     ;查表获取该数据的字型码            
DIR1: MOV    P0,A          ;字型码送段码端口 P0 
      ACALL  DL11          ;调用延时子程序 
      INC    R0            ;缓冲区地址+1 
      MOV    A,R3          ;取出位码 
      JB     ACC.5,LD1     ;判断 6 位数码管显示完吗?显示完转 LD1 
      RL     A             ;未完,左移一位 
      MOV    R3,A          ;保存位码 
      AJMP   LD0 
LD1:  RET                  ;子程序返回 
TAB1: DB     0C0H,0F9H,0A4H,0B0H,99H,92H 
      DB     82H,0F8H,80H,90H,88H,83H,0C6H,0A1H            
      DB     86H,8EH,0BFH,0FFH,0FFH 
DL11: MOV    R7,#02H 
DL:   MOV    R6,#0FFH 
DL6:  DJNZ   R6,DL6 
      DJNZ   R7,DL 
      RET 
      END 

单片机实验-A/D和D/A转换_第1张图片

ORG 0000H
LJMP MAIN
ORG 000BH
AJMP LOOP
ORG 001BH
AJMP LOOP1
ORG 0030H
MAIN:MOV SP,#60H
     MOV DPTR,#7FFFH
     MOV TMOD,#11H
     MOV TH0,#3CH
     MOV TL0,#0B0H
     MOV TH1,#3CH
     MOV TL1,#0B0H
     SETB EA
     SETB ET0
     SETB ET1
     SETB TR0
     SJMP $
LOOP:MOV A,#0F2H
     MOVX @DPTR,A
     CLR TR0
     MOV TH0,#3CH
     MOV TL0,#0B0H
     SETB TR1
     RETI
LOOP1:MOV A,#01H
     MOVX @DPTR,A
     CLR TR1
     MOV TH1,#3CH
     MOV TL1,#0B0H
     SETB TR0
     RETI
     END

单片机实验-A/D和D/A转换_第2张图片

单片机实验-A/D和D/A转换_第3张图片

你可能感兴趣的:(单片机)