共2条
1/1 1 跳转至页
uchar,bdata,nbsp,nbsp,out,data 看看程序错在那里,编译提示uchar bdata out_data;丢失分号
问
#include <reg51.h>
#include <intrins.h>
sbit DOUT=P0^4;
sbit DIN=P0^3;
sbit SCLK=P0^5;
sbit CS=P0^6;
uchar bdata out_data; /*定义变量out_data位于可位寻址区*/
sbit DIN_DATA=out_data^7;
sbit DOUT_DATA=out_data^0;
void no_send(void) /*禁止计算机发送数据*/
{
utlk(0x84,0x00); /*RTS为低时,禁止计算机发送数据*/
}
/*发送TX1,TX2中的16位数到max3100的DIN端,同时接收max3100的DOUT端数据送RX1,RX2*/
void uchar utlk(uchar tx1,uchar tx2)
{
uchar rx2=0;
CS=0; /*选中3100*/
byt8(tx1); /*发送并接收高8位*/
rx2=byt8(tx2); /*发送并接收低8位*/
CS=1; /*禁止3100*/
return rx2; /*取回收到的数据*/
}
/*从DIN端移位输出8位据,并从DOUT端接收8位数据*/
void uchar byt8(uchar x)
{
uchar i; /*8位传送,循环8次*/
out_data=x; /*把X的值放入可位寻址的变量out_data中*/
DOUT=1; /*确保cpu能从DOUT接收*/
for(i=0;i<8;i++)
{
DIN=DIN_DATA;
SCLK=1; /*时钟端SCLK上跳沿*/
out_data=out_data<<1;
DOUT_DATA=DOUT; /*时钟正跳变后读取数据位*/
SCLK=0; /*时钟端SCLK下跳沿*/
}
x=out_data;
return x;
}
void let_send(void) /*允许计算机发送数据*/
{
utlk(0x86,0x00);/*TE为高电平时,只改变RTS的状态而不发数据*/
/*RTS为高时,允许计算机发送数据*/
}
void Init3100(void)
{
uchar dat,i=0;
do
{
let_Send(0xc4,0x0a); /*写配置字0xc40a, fifo使能,/IRO使能 ,9600bps */
Delayus(200); /*必须有延时*/
dat = Send3100(0x40,0x00); /*读配置字*/
}while((dat!= 0x0a)&&(++i<5)); /*不成功则配置5次,确保可靠配置,dat!=0x01(57.6kbps)是错误的*/
/*是测试时用的,能跑到576000*/
/*应该是0x0a(9600bps)*/
let_Send(0x84,0x55); //写数据,配置端口方等
Delayus(200); //必需有延时
}
void main(void)
{
Init3100();
while(1);
{
let_Send();
}
} 答 1: 你的uchar做过预定义么?因为没有这个数据类型,所以出错,改为:unsigned char bdata ...
或者在他之前添加:#define uchar unsigned char
#include <intrins.h>
sbit DOUT=P0^4;
sbit DIN=P0^3;
sbit SCLK=P0^5;
sbit CS=P0^6;
uchar bdata out_data; /*定义变量out_data位于可位寻址区*/
sbit DIN_DATA=out_data^7;
sbit DOUT_DATA=out_data^0;
void no_send(void) /*禁止计算机发送数据*/
{
utlk(0x84,0x00); /*RTS为低时,禁止计算机发送数据*/
}
/*发送TX1,TX2中的16位数到max3100的DIN端,同时接收max3100的DOUT端数据送RX1,RX2*/
void uchar utlk(uchar tx1,uchar tx2)
{
uchar rx2=0;
CS=0; /*选中3100*/
byt8(tx1); /*发送并接收高8位*/
rx2=byt8(tx2); /*发送并接收低8位*/
CS=1; /*禁止3100*/
return rx2; /*取回收到的数据*/
}
/*从DIN端移位输出8位据,并从DOUT端接收8位数据*/
void uchar byt8(uchar x)
{
uchar i; /*8位传送,循环8次*/
out_data=x; /*把X的值放入可位寻址的变量out_data中*/
DOUT=1; /*确保cpu能从DOUT接收*/
for(i=0;i<8;i++)
{
DIN=DIN_DATA;
SCLK=1; /*时钟端SCLK上跳沿*/
out_data=out_data<<1;
DOUT_DATA=DOUT; /*时钟正跳变后读取数据位*/
SCLK=0; /*时钟端SCLK下跳沿*/
}
x=out_data;
return x;
}
void let_send(void) /*允许计算机发送数据*/
{
utlk(0x86,0x00);/*TE为高电平时,只改变RTS的状态而不发数据*/
/*RTS为高时,允许计算机发送数据*/
}
void Init3100(void)
{
uchar dat,i=0;
do
{
let_Send(0xc4,0x0a); /*写配置字0xc40a, fifo使能,/IRO使能 ,9600bps */
Delayus(200); /*必须有延时*/
dat = Send3100(0x40,0x00); /*读配置字*/
}while((dat!= 0x0a)&&(++i<5)); /*不成功则配置5次,确保可靠配置,dat!=0x01(57.6kbps)是错误的*/
/*是测试时用的,能跑到576000*/
/*应该是0x0a(9600bps)*/
let_Send(0x84,0x55); //写数据,配置端口方等
Delayus(200); //必需有延时
}
void main(void)
{
Init3100();
while(1);
{
let_Send();
}
} 答 1: 你的uchar做过预定义么?因为没有这个数据类型,所以出错,改为:unsigned char bdata ...
或者在他之前添加:#define uchar unsigned char
共2条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
| 【分享开发笔记,赚取电动螺丝刀】墨水屏文本显示器被打赏¥25元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取磁力计iis2mdc被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取LPS22HH气压、温度被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取STTS751温度被打赏¥17元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX软件读取HTS221温湿度被打赏¥22元 | |
| M5PAPERESP32EINKDEVKIT评测|使用MicroPython开发M5Paper被打赏¥15元 | |
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
我要赚赏金
