找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5163|回復: 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于5410A/D單片機的A/D轉(zhuǎn)換測五伏電壓的C51程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:23029 發(fā)表于 2010-4-12 16:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

匯編語言看懂了,但是改不成C51的程序,請各位高手能幫我一下,謝謝!

 

LED_MCU_START    EQU    P3.7

ADC_CONTR    EQU    0C5H

ADC_DATA      EQU    0C6H

;ADC_LOW2     EQU    0BEH

 

P1M0        EQU       91H

P1M1        EQU       92H

 

ADC_Power_On_Speed_Channel_0   EQU   11100000B

ADC_Power_On_Speed_Channel_1   EQU   11100001B

ADC_Power_On_Speed_Channel_2   EQU   11100010B

ADC_Power_On_Speed_Channel_3   EQU   11100011B

ADC_Power_On_Speed_Channel_4   EQU   11100100B

ADC_Power_On_Speed_Channel_5   EQU   11100101B

ADC_Power_On_Speed_Channel_6   EQU   11100110B

ADC_Power_On_Speed_Channel_7   EQU   11100111B

 

ADC_Channel_0_Result      EQU    30H

ADC_Channel_1_Result      EQU    31H

ADC_Channel_2_Result      EQU    32H

ADC_Channel_3_Result      EQU    33H

ADC_Channel_4_Result      EQU    34H

ADC_Channel_5_Result      EQU    35H

ADC_Channel_6_Result      EQU    36H

ADC_Channel_7_Result      EQU    37H

 

ORG    0000H

LJMP   MAIN

 

ORG    0050H

MAIN:

      CLR  LED_MCU_START

      MOV   SP,  #7FH

 

      ACALL Initiate_RS232

 

      ACALL  ADC_Power_On

     

      ACALL  Set_P12_Open_Drain

      ACALL  Set_ADC_Channel_2

 

      ACALL  Get_AD_Result

      ACALL  Send_AD_Result

 

      ACALL  Set_P12_Normal_10

      MOV   A,  ADC_Channel_2_Result

      CPL    A

      MOV    P1,  A

 

Wait_Loop:

SJMP  Wait_Loop

 

 

Initiate_RS232;

CLR   ES

MOV   TMOD,  #20H

MOV   SCON,   #50H

MOV    TH1,  #0FBH

MOV    TL1,   #0FBH

 

SETB   TR1

RET

 

Send_Byte:

CLR   TI

MOV   SBUF,  A

Send_Byte_Wait_Finish:

JNB    TI,  Send_Byte_Wait_Finish

CLR    TI

RET

 

ADC_Power_On:

     PUSH   ACC
     ORL    ADC_CONTR, #80H

     MOV    A, #20H

     ACALL   Delay

     POP   ACC

     RET

 

;設(shè)置P1.2,設(shè)置A/D通道所在的I/O為開漏模式

Set_P12_Open_Drain;

PUSH   ACC

MOV    A,  #00000100B

ORL    P1M0,  A

ORL    P1M1,  A

POP     ACC

RET

 

;設(shè)置P1.2,為普通IO

Set_P12_Normal_IO

PUSH   ACC

MOV    A,  #11111011B

ANL    P1M0,  A

ANL    P1M1,  A

POP     ACC

RET

 

Set_ADC_Channel_2;

MOV    ADC_CONTR,  #ADC_Power_On_Speed_Channel_2

MOV    A,  #05H

ACALL   Delay

RET

 

Send_AD_Result;

     PUSH    ACC

     MOV   A,  ADC_Channel_2_Result

     ACALL  Send_Byte

     POP    ACC

     RET

 

Get_AD_Result:

     PUSH   ACC
     MOV    ADC_DATA,  #0

     ORL     ADC_CONTR,  #00001000B

 

Wait_AD_Finishe:

     MOV   A,  #00010000B

     ANL    A,  ADC_CONTR

     JZ      Wait_AD_Finishe

 

     ANL    ADC_CONTR,  #11100111B

 

     MOV   A, ADC_DATA

     MOV   ADC_Channel_2_Result,  A

     POP    ACC

     RET

 

Delay:

     PUSH   02

     PUSH   03

     PUSH   04

     MOV    R4,  A

Delay_Loop0:

MOV    R3,  #200

Delay_Loop1;

MOV    R2,  #249

Delay_Loop:

DJNZ   R2, Delay_Loop

DJNZ   R3, Delay_Loop1

DJNZ   R4, Delay_Loop0

 

POP    04

POP    03

POP    02

RET

 

END


 

[此貼子已經(jīng)被作者于2010-4-13 9:25:59編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表