导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→为什么编译时总提示特殊寄存器变量没定义呢?[xiuwei]

 *第25734篇: 为什么编译时总提示特殊寄存器变量没定义呢?

  
楼 主:xiuwei 2004年9月14日19:22
 为什么编译时总提示特殊寄存器变量没定义呢?
大虾帮忙看一下下面的程序为什么编译时总提示特殊寄存器变量没定义呢?

#include  <reg51.h>  
#define uchar unsigned char
uchar j=0;
uchar i;
uchar idata ad_buf[6];/*ad输入缓冲区*/
uchar tlc2543(uchar ch);/*tlc2543子程序*/
uchar send(void);/*串行发送程序*/

main()
{
uchar k;
uchar channel;
scon=ox40;pcon=ox00;/*波特率9600*/
tmod=ox20;
tl1=oxfd;
th1=oxfd;
tlc2543(channel);/*ad预备*/
j=0;
while(1)
  {
   channel=0;/*00、01、02三个通道轮流采样*/
   for(k=0;k  <3;k++)
     {
      tlc2543(channel);
      channel++;
     }
   send();
  }
}
uchar tlc2543(uchar ch)/*tlc2543子程序,ch是通道号,数据格式:12位、高位先输出*/
{
  uchar adh;
  uchar adl;
  sbit clock=p1^4;
  sbit cs0=p1^7;
  sbit datain=p1^5;
  sbit dataout=p1^6;
  clock=0;
  cs0=1;
  cs0=0;
  ch  <  <4;
  for(i=0;i  <4;i++)
    {
     datain=(bit)(ch&126);
     if(dataout)adh|=1;
  ch  <  <1;
     adh  <  <1;
     clock=1;
     clock=0;
    }
  datain=0; 
  for(i=0;i  <8;i++)
    {
     if(dataout)adl|=1; 
     adl  <  <1;
     clock=1;
     clock=0;
    }
  cs0=1;
  ad_buf[j]=adh;
  ad_buf[j]=adl;
  j++;
}

uchar send(void)/*发送6个8位数据*/
{
   tr1=1;
   i=0;   
   while(i  <6)
     {
       sbuf=ad_buf[i];
       while(ti==0);
       ti=0;
       i++;
      }
   rt1=0;
}

  
2楼:lichuanfa 2004年9月14日21:44
 #include<reg51.h>
#

#include  <reg51.h>  
#define uchar unsigned char
uchar j=0;
uchar i;
uchar idata ad_buf[6];/*ad输入缓冲区*/
uchar tlc2543(uchar ch);/*tlc2543子程序*/
uchar send(void);/*串行发送程序*/


sbit clock=P1^4;
  sbit cs0=P1^7;
  sbit datain=P1^5;
  sbit dataout=P1^6;
  
main()
{
uchar k;
uchar channel;
SCON=0x40;PCON=0x00;/*波特率9600*/
TMOD=0x20;
TL1=0xfd;
TH1=0xfd;
tlc2543(channel);/*ad预备*/
j=0;
while(1)
  {
   channel=0;/*00、01、02三个通道轮流采样*/
   for(k=0;k  <3;k++)
     {
      tlc2543(channel);
      channel++;
     }
   send();
  }
}
uchar tlc2543(uchar ch)/*tlc2543子程序,ch是通道号,数据格式:12位、高位先输出*/
{
  uchar adh;
  uchar adl;
  
  clock=0;
  cs0=1;
  cs0=0;
  ch  <  <4;
  for(i=0;i  <4;i++)
    {
     datain=(bit)(ch&126);
     if(dataout)adh|=1;
  ch  <  <1;
     adh  <  <1;
     clock=1;
     clock=0;
    }
  datain=0; 
  for(i=0;i  <8;i++)
    {
     if(dataout)adl|=1; 
     adl  <  <1;
     clock=1;
     clock=0;
    }
  cs0=1;
  ad_buf[j]=adh;
  ad_buf[j]=adl;
  j++;
}

uchar send(void)/*发送6个8位数据*/
{
   TR1=1;
   i=0;   
   while(i  <6)
     {
       SBUF=ad_buf[i];
       while(TI==0);
       TI=0;
       i++;
      }
   RI=0;
}

  
3楼:xiuwei 2004年9月20日17:02
 谢谢 lichuanfa !
谢谢 lichuanfa !
非常感谢您的帮忙!

>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:请问motorola的DSP56800应用前景怎么样?

[下一篇主题]:vc开发