打印

大家好,我想请教使用AT89C52的数据采集的一个问题,急

[复制链接]
1650|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dcqqok147|  楼主 | 2007-7-24 19:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想通过使用AT89C52控制两个MAX197将14路模拟信号转换数字信号,然后通过MAX232串口通信送到计算机里,但是我通过串口大师调试时得不到信号,我觉得有可能是我的程序有问题或者我的AT89C52的外围电路没有设计好,请大侠们帮我看看,谢谢,以下是它的程序:
#include <intrins.h>
#include <reg51.h>
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;

#define A0                  P1_0
#define A1                  P1_1
#define A2                  P1_2
#define BIP                        P1_3
#define RNG                  P1_4
#define ACQMOD                  P1_5
#define PD0                        P1_6
#define PD1                 P1_7

#define CS1                    P2_5
#define CS2                    P2_6
#define HBEN                   P2_7
#define RXD                    P3_0
#define TXD                    P3_1
#define INT                    P3_2
#define WR                     P3_6
#define RD                     P3_7

unsigned char Chh[8],Chl[8];
int i;
/*系统初始化*/
void SystemInit(void)
{
    TCON=0x05;//外部中断下降沿触发
    TMOD=0x21;//Timer1方式2,Timer0方式1
    TH1=0xFD;//波特率19200
    TR1=1;
    SCON=0x50;//串行通讯方式1,允许接收
    PCON=0x80;//SMOD=1
}

/*AD转换*/   
void  StarAd(void)
{
       
       for(i=0;i<8;i++)
       {
       WR=0;
       P1=0x48+i;//初始化,内部时钟模式,内部控制采集,输入范围+-5V,通道1
          WR=1;

       do{}
       while (INT==1);

            {
            RD=0;
        P1=0xFF;
        HBEN=0;
        Chl=P1;
        P1=0xFF;
        HBEN=1;
        Chh=P1;
        RD=1;
              }
       do{}
       while (INT==0);            
        
       }
}
/*串口发送*/
/**********发送一帧数据*********/
void SerialSendBytes(void)
{
        unsigned char j;
    for(j=0;j<8;j++)
    {
        TI=0;
        SBUF=Chl[j];
        do
        {}while(TI==0);//等待TI为1后才开始下个数据的传送
        TI=0;
        SBUF=Chh[j];
        do
        {}while(TI==0);//等待TI为1后才开始下个数据的传送
    }
    TI=0;
}  


void Main(void)
{
        unsigned char ByteR;
        SystemInit();
    //unsigned char Chh[8],Chl[8];
    while(1)
    {      CS1=0;
           CS2=1;
           if (RI)
        {
                   RI=0;
                ByteR=SBUF;
                if(ByteR==0xFF)
                   {  
                    StarAd();
                    SerialSendBytes();
                    RI=0;
                 }
         }
              CS1=1;
               CS2=0;
           if (RI)
        {
                   RI=0;
                ByteR=SBUF;
                if(ByteR==0xFF)
                   {  
                    StarAd();
                    SerialSendBytes();
                    RI=0;
                 }
         }
     }
        
}

相关帖子

沙发
dcqqok147|  楼主 | 2007-7-24 19:30 | 只看该作者

AT89C52

使用特权

评论回复
板凳
dcqqok147|  楼主 | 2007-7-24 19:34 | 只看该作者

AT89C52再发一次

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

17

帖子

0

粉丝