找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5152|回复: 0
打印 上一主题 下一主题
收起左侧

关于5410A/D单片机的A/D转换测五伏电压的C51程序

[复制链接]
跳转到指定楼层
楼主
ID:23029 发表于 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

 

;设置P1.2,设置A/D通道所在的I/O为开漏模式

Set_P12_Open_Drain;

PUSH   ACC

MOV    A,  #00000100B

ORL    P1M0,  A

ORL    P1M1,  A

POP     ACC

RET

 

;设置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


 

[此贴子已经被作者于2010-4-13 9:25:59编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表