|
今天用CVAVR写了个串口通讯的函数,可是编译器老提示我写的数据包发送函数的形参与传入的实参类型不一致
但是我明明定义的都是unsigned char型的数组,这个是为什么,应该怎么解决呢
#include <mega16.h>
#define FOSC 7372800 //晶振频率
#define BAUD 9600 //波特率
unsigned char Receive_data[8]; //串口接收数据用的数组
unsigned char Send_data[8]={0XFF,0X04,0XF1,0XF2,0XF3,0XF4};
unsigned char Powerstand[8]={0x2a,0xe1,0xe2,0xe3};
void USART_init() //串口初始化
{
UBRRH=(FOSC/BAUD/16-1)/256;
UBRRL=(FOSC/BAUD/16-1)%256;
UCSRB|=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
#asm("sei")
}
unsigned char USART_Transmit(unsigned char exchange[8]) //串口数据包发送函数
{
unsigned char x;
for(x=0;x<8;x++)
{
while(!(UCSRA&(1<<UDRE)));
UDR=exchange[x];
// UDR=Send_data[x];
}
}
unsigned char USART_Receive() //串口数据包接收函数
{
unsigned char x; //用于数组循环
for(x=0;x<9;x++)
{
while(!(UCSRA&(1<<RXC)));
Receive_data[x]=UDR;
}
}
interrupt [USART_RXC] void usart_rx_isr(void) //接收中断函数
{
unsigned char x;
if(0x40==Receive_data[0]) //接收到测试信号,开始打开控制,发送实时功率
{
USART_Transmit(Send_data[8]); }
if(0x2a==Receive_data[0])
{
USART_Transmit(Powerstand[8]); }
}
void main(void)
{
USART_init();
USART_Receive();
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|