这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » uchar,bdata,nbsp,nbsp,out,data 看看程序错在那里,

共2条 1/1 1 跳转至

uchar,bdata,nbsp,nbsp,out,data 看看程序错在那里,编译提示uchar bdata  out_data;丢失分号

院士
2006-09-17 18:14:16     打赏
uchar,bdata,nbsp,nbsp,out,data 看看程序错在那里,编译提示uchar bdata  out_data;丢失分号



关键词: uchar     bdata     看看     程序     在那里     编译         

院士
2006-12-22 22:43:00     打赏
2楼
问 #include <reg51.h>
#include <intrins.h>


sbit DOUT=P0^4;
sbit DIN=P0^3;
sbit SCLK=P0^5;
sbit CS=P0^6;


uchar bdata&nbsp;&nbsp;out_data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*定义变量out_data位于可位寻址区*/
sbit DIN_DATA=out_data^7;
sbit DOUT_DATA=out_data^0;


void no_send(void)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*禁止计算机发送数据*/
{
utlk(0x84,0x00);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*RTS为低时,禁止计算机发送数据*/&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}


/*发送TX1,TX2中的16位数到max3100的DIN端,同时接收max3100的DOUT端数据送RX1,RX2*/


void uchar utlk(uchar tx1,uchar tx2)
{
&nbsp;&nbsp;uchar rx2=0;
&nbsp;&nbsp;CS=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*选中3100*/
&nbsp;&nbsp;byt8(tx1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*发送并接收高8位*/
&nbsp;&nbsp;rx2=byt8(tx2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*发送并接收低8位*/
&nbsp;&nbsp;CS=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*禁止3100*/
&nbsp;&nbsp;return rx2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*取回收到的数据*/
}


/*从DIN端移位输出8位据,并从DOUT端接收8位数据*/

void uchar byt8(uchar x)
{
&nbsp;&nbsp;&nbsp;uchar i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*8位传送,循环8次*/
&nbsp;&nbsp;&nbsp;out_data=x;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*把X的值放入可位寻址的变量out_data中*/
&nbsp;&nbsp;&nbsp;DOUT=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*确保cpu能从DOUT接收*/
&nbsp;&nbsp;&nbsp;for(i=0;i<8;i++)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;DIN=DIN_DATA;
&nbsp;&nbsp;&nbsp;&nbsp;SCLK=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*时钟端SCLK上跳沿*/
&nbsp;&nbsp;&nbsp;&nbsp;out_data=out_data<<1;
&nbsp;&nbsp;&nbsp;&nbsp;DOUT_DATA=DOUT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*时钟正跳变后读取数据位*/
&nbsp;&nbsp;&nbsp;&nbsp;SCLK=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*时钟端SCLK下跳沿*/
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;x=out_data;
&nbsp;&nbsp;&nbsp;&nbsp;return x;
}

void&nbsp;&nbsp;let_send(void)&nbsp;&nbsp;&nbsp;/*允许计算机发送数据*/
{
&nbsp;&nbsp;&nbsp;utlk(0x86,0x00);/*TE为高电平时,只改变RTS的状态而不发数据*/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*RTS为高时,允许计算机发送数据*/
}


void Init3100(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;uchar dat,i=0;
&nbsp;&nbsp;&nbsp;&nbsp;do
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let_Send(0xc4,0x0a);&nbsp;&nbsp;&nbsp;&nbsp;/*写配置字0xc40a, fifo使能,/IRO使能 ,9600bps */

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delayus(200);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*必须有延时*/

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dat = Send3100(0x40,0x00); /*读配置字*/

&nbsp;&nbsp;&nbsp;&nbsp;}while((dat!= 0x0a)&&(++i<5)); /*不成功则配置5次,确保可靠配置,dat!=0x01(57.6kbps)是错误的*/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*是测试时用的,能跑到576000*/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*应该是0x0a(9600bps)*/

&nbsp;&nbsp;&nbsp;let_Send(0x84,0x55);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//写数据,配置端口方等
&nbsp;&nbsp;&nbsp;&nbsp;Delayus(200);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//必需有延时
}


void main(void)
{
Init3100();
while(1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{
&nbsp;&nbsp;let_Send();
&nbsp;&nbsp;}


}&nbsp; 1: 你的uchar做过预定义么?因为没有这个数据类型,所以出错,改为:unsigned char bdata ...
或者在他之前添加:#define uchar unsigned char

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]