STC12C5A60S2单片机串口2发送数组的程序编译时出现一个错误

麻烦大家帮忙看看出现什么错误了,错误提示为:UART2.C(31): error C141: syntax error near ']'(位置在主函数的SendCMD(circle[]))这一行

#include<reg51.h>
#include<intrins.h>
typedef unsigned char BYTE;
typedef unsigned int WORD;

/*声明与串口2相关的特殊功能寄存器*/
sfr AUXR = 0x8e; //辅助寄存器
sfr AUXR1 = 0xa2; //辅助寄存器1
sfr S2CON = 0x9a; //串口2控制寄存器
sfr S2SBUF = 0x9b; //串口2数据缓冲寄存器
sfr BRT = 0x9c; //独立波特率发生器
sfr IE2 = 0xaf; //串口2中断允许寄存器
#define S2RI 0x01 //S2CON寄存器第0位
#define S2TI 0x02 //S2CON寄存器第1位
#define S2RB8 0x04 //S2CON寄存器第2位
#define S2TB8 0x08 //S2CON寄存器第3位

bit busy;
WORD i;
BYTE code circle[]={0x7E,0xFF,0x06,0x11,0x00,0x00,0x01,0xEF};
void SendCMD(BYTE table[]);

void main()
{
S2CON = 0x50; //工作方式1,8位UART,波特率可变
BRT = 0xfd; //设置独立波特率发生的自动重装值
AUXR = 0x14; //开启独立波特率发生器,串口2的波特率不加倍,独立波特率发生器每12个时钟周期计数1次
AUXR1 = 0x00; //串口2在P1口,RxD2 = P1^2,TxD2 = P1^3
IE2 = 0x01; //开启串口2中断
EA = 1; //开启总中断
SendCMD(circle[]);
busy = 1;
while(1);
}

/*串口2中断服务程序*/
void Uart2() interrupt 8
{
if(S2CON&S2RI)
{
S2CON &= ~S2RI; //清除接收中断标志
}
if(S2CON&S2TI)
{
S2CON &= ~S2TI; //清除发送中断标志
busy = 0; //清楚发送忙表示
}
}

void SendCMD(BYTE table[])
{
for(i=0;i<8;i++)
{
while(busy);
S2SBUF = table[i];
while(busy);
busy = 0;
}
}

第1个回答  2015-04-04
改成这样就好了SendCMD(circle);追问

非常感谢,编译成功了,但是串口调试助手收不到任何东西,您能看看我的发送函数有什么问题吗?

本回答被提问者采纳
第2个回答  2015-04-04
需要给你完成一份吗

STC12C5A60S2单片机无法烧写程序
排除了这个问题,我估计有可能是U转串线坏了或是电脑的U口坏了,我遇到过一回这种情况最后是因为U口坏了。你可以这样,有台式机的话,找机箱后面的串口,然后取三个杜邦线(导线就行)。2连3(电脑后面的串口上标有数字1~9但很小,然后电脑上的2连单片机上的3),3连2,5连GND,下载时COM1...

stc12c5a60s2单片机烧不进程序 为什么?
把P1.0 \\P1.1 都接0看看

STC12C5A60S2单片机程序烧写不进去
首先要经常电路是否没问题 再者,usb转串口是可以下载的,有些电脑usb供电较差,你可以选用低的波特率来下载,比如把波特率选9600或更低。

STC12C5A60S2单片机的串口中断问题求助
还是那个中断优先级寄存器没有设置好,至少要设置IP,IP2寄存器,将两个串口设置成高优先级,而将定时器0设置成低优先级。另外,STC12C5A60S2串口的波特率可以设置得很高的,尽量用高波特发送,可以减少发送时间,完全可以设置成38400的,甚至57600,都没有问题的。

stc12c5a60s2 单片机I\/O口设置问题!
STC89C指令周期为12T,STC12C指令周期为1T,也就是说同样用12M的外部晶振STC89C系列指令周期为12M\/12T=1us,而STC12C系列为12M\/1T=0.083us,因此在执行同样的循环延时指令时,将出现12倍的时间差,可能会导致外围器件的时序出现不匹配的情况。需要酌情重新匹配外设时序。

stc12c5a60s2单片机第二串口通讯问题(可以发送不能接接收)?
如果确定硬件没有问题,先用查询方式测试接收是否正常(标志位是S2CON的最低位)。如果查询方式接收正常,再检查中断相关的设置(串口2中断允许IE2的最低位置位了没有,时钟源有没有在运行,波特率设置是否正确,中断入口函数是不是对应于矢量8)

STC单片机烧写不进去程序
有可能是串口线的旁路电容太大了。检查下电路,看电路的电容是否配置合理,特别是串口线上不能加对地的滤波电容。

stc12c5a60s2 单片机I\/O口设置问题!
STC89C指令周期为12T,STC12C指令周期为1T,也就是说同样用12M的外部晶振STC89C系列指令周期为12M\/12T=1us,而STC12C系列为12M\/1T=0.083us,因此在执行同样的循环延时指令时,将出现12倍的时间差,可能会导致外围器件的时序出现不匹配的情况。需要酌情重新匹配外设时序。

单片机stc12c5a60s2 想要用串口助手来控制led亮灭,其中led由P0口控制...
用串口助手发送数据时,是发送十六进制数(也是二进制数)?还是字符?看你的程序应该是发送十六进制数。还有,串口助手的波特率是否为9600?串口初始化程序要写一行,如下,原写法初始有误。还有,串口接收后,不要返回,删掉SBUF=0X00;这没有什么用,但串口还要发送,又没while语句等待发送结束。

串口读写,有几点不明白.请高手指教
STC12C5A60S2单片机 用串口2,为何在KEI 中调不通,串口1可以 例程是官方的STC-ISP的范例都一样,求解。串口1 的例程可以在串口窗中观察到STC12C5A60S2\\r\\nUart2 Test !,串口2则不能,为何。\/*---*\/ \/* --- STC MCU Limited ---*\/ \/* --- STC12C5Axx Series MCU UART2 (8-...

相似回答