有人可以告诉我是否可以使用C++程序刻录8051微控制器?我试过在线搜索它,但似乎无法确定是否可能.Keil使用C,但是我需要编写的程序是字符串密集型的,与C#相比,C是非常不符合字符串的,这是我以前习惯使用的.目前,我正在尝试用C语言编写代码,但它变得非常混乱,所以如果我能用C++编写它,我会非常放心.
我需要一个C++编译器来创建一个Hex输出文件,然后可以将其烧录到微控制器上.有人听说过我可以使用的东西吗?而且,C使用一个头文件,让你引用端口,但当我试图找出这个头文件是否在C++中使用时,我找不到任何关于它的信息.
另外:我使用的微控制器是Atmel AT89C51,具有4K字节的可重编程闪存和128 x 8位内部RAM.这实际上是用于大学项目的机器人,编码实际上并不需要OOP.它只有很多以2D字符串数组格式查找的表.我想考虑C++的唯一原因是因为操作字符串似乎有些混乱(由于我缺乏C语言专业知识).
有没有人知道头文件?C使用#include reg51.h但我试图找出它是否适用于C++并且无法在其上找到任何内容.
我正在使8051微控制器与计算机进行无线通信.微控制器将字符串发送到其串行端口(DB9),计算机将接收该字符串并对其进行操作.
我的问题是我不知道如何让8051只传输一次字符串.由于我需要在PC端操作字符串,因此必须只接收一次.目前,即使在C代码中我发送一次字符串,在我的计算机上我连续收到相同的字符串.我认为这是因为SBUF中的任何内容都是连续传输的.有什么方法可以只发送一次我的字符串吗?有没有办法清空SBUF?
我试图在DB9上使用RTS(请求发送)引脚(第7个引脚),因为我读到某个地方,如果我否定了该引脚上的电压,它将阻止数据流到串行端口.所以我所做的是编程我的微控制器发送字符串,然后将逻辑电平0发送到连接到我的DB9 RTS引脚的输出引脚.但是,这没有用.
有没有人有什么建议?我真的很感激他们.
我在PC上使用的软件是Xbee模块的X-CTU.这是我的微控制器上的代码:
include reg51.h
void SerTx(unsigned char);
void main(void)
{
TMOD = 0x20;
TH1 = 0xFD;
SCON = 0x50;
TR1 = 1;
SerTx('O');
SerTx('N');
SerTx('L');
SerTx('Y');
}
void SerTx(unsigned char x)
{
SBUF = x;
while(TI==0);
TI = 0;
}
Run Code Online (Sandbox Code Playgroud)
有人可以验证它实际上只发送一次字符串吗?
看起来像史蒂夫,布鲁克斯和尼尔,当他们说这是我的主要功能导致问题之后发生的事情时,头部钉在头上.我刚刚尝试了Steve提出的建议代码(更具体地说是for(;;);并在main之外定义了serTX)并且它工作得很好.控制器可能重新启动,因此相同的代码不断重复.
非常感谢你的帮助!:)
我正在尝试使用蓝牙和C#中的用户界面让我的笔记本电脑与机器人通信.我需要发送的信息非常小而且基本.它是一个简单的字符串,就是这样.
我真的没有任何使用蓝牙的经验,所以我认为笔记本电脑的方式我可以使用笔记本电脑中的内置蓝牙,因为我知道什么是COM端口.但是,对于机器人我购买了一个单独的蓝牙设备(USB加密狗?).我还下载并安装了Microsoft.WindowsMobile.SharedSource.Bluetooth.现在我面临的问题是我不知道如何处理它.有一个BluetoothDevice类和一个BluetoothRadio类.我应该使用哪个?我将设备与笔记本电脑配对.
我在网上广泛搜索过,找不到任何简单的东西.当我尝试自己简化代码时,它不起作用.我只需要从我的笔记本电脑发送一个简单的字符串到将连接到机器人的USB蓝牙设备.
我知道有一个32英尺的替代微软命名空间,但我更喜欢使用微软的.
有什么建议?我非常感激.
我正在尝试让微控制器与桌面上的程序进行通信.我正在使用两端的Xbee无线电串口连接.
当我从微控制器向桌面发送内容并且桌面上的程序然后将某些内容发送回微控制器时,通信正常.
但是,当我要求将信息从控制器连续发送到桌面程序,直到桌面程序发送特定答案时,它不起作用.
这是我正在谈论的代码:
unsigned char ans = 'N';
unsigned int count = 0;
void main(void)
{
while(1)
{
if(count == 0)
{
Configure();
count = 1;
}
//there is some more code here but is irrelevant to the serial communication
}
}
void Configure()
{
//Repeat this until the user accepts the sent string as correct
while(ans == 'N')
{
BuildString();
Send();
Receive();
}
}
void Send()
{
unsigned int i;
TMOD = 0x20;
TH1 = 0xFD;
SCON = …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些代码从C#转换为C,以便可以将其刻录到微控制器上.
有人可以告诉我如何将C#中的二维字符串数组转换为C语言中的某些内容?
我的C#代码如下所示:
string[,] DirectionPosition = {{"00", "10", "", "01", ""},
{"01", "11", "", "02", "00"},
{"02", "12", "", "03", "01"},
{"03", "13", "", "04", "02"},
{"04", "14", "", "", "03"},
{"10", "20", "00", "11", ""},
{"11", "21", "01", "12", "10"},
{"12", "22", "02", "13", "11"},
.
.
.
.
{"44", "", "34", "", "43"},};
Run Code Online (Sandbox Code Playgroud)
而且,我将如何访问元素?在C#中,如果我想要第三行中的第二个元素,那么它只是DirectionPosition [2,1],但是当C中没有字符串的情况下更少的2-D字符串数组是什么呢?
有人可以帮我理解C中的结构错误吗?这是我的代码:
struct Orientation
{
char facing;
char sensor;
char mazeDir;
};
struct Orientation O[16];
O[0] = {'N', 'F', 'N'};
O[1] = {'N', 'B', 'S'};
O[2] = {'N', 'R', 'E'};
O[3] = {'N', 'L', 'W'};
O[4] = {'S', 'F', 'S'};
O[5] = {'S', 'B', 'N'};
O[6] = {'S', 'R', 'W'};
O[7] = {'S', 'L', 'E'};
O[8] = {'E', 'F', 'E'};
O[9] = {'E', 'B', 'W'};
O[10] = {'E', 'R', 'S'};
O[11] = {'E', 'L', 'N'};
O[12] = {'W', 'F', 'W'};
O[13] …Run Code Online (Sandbox Code Playgroud)