注册会员
- 积分
- 193
- 威望
- 230
- 贡献
- 33
- 兑换币
- 0
- 注册时间
- 2010-4-8
- 在线时间
- 3 小时
|
一直想修改别人的程序将一个数组发送到电脑上,但接收到的好像不是数组里面的数据,搞了好多天了
/****************************************/
// 9S12XS128 串口发送传感器采集数据
/****************************************/
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
char k;
char atd0_da[15]={0xa4,0x5b,0x5e,0x76,0xa7,0xc4,0x9f,0x3a,0xb3,0x58,0x73,0x96,0x75,0xa5,0x5d};
/****************************************/
// SCI相关函数声明
/****************************************/
//SCI初始化函数
void SCI_init(void);
//发送1字节数
//参数:c1为待发送的1字节数据
void SCISendChar(char c1);
//发送1个字符串
//参数:pc1指向待发送的字符串
void SCISendString(char *pc1);
//把1字节数据才拆成2个十六进制数发送
//比如要发送0x34这个数,本函数会先发送3的ASCII码,然后发送4的ASCII码
//参数:c1为待发送的1字节数据
void SCISendHex(char c1);
//把一个数转换成这个数对应的ASCII码
//参数:c1为待转换的数
//返回值:c1这个数的ASCII码
//比如:c1为3,那么返回值为3的ASCII码0x33
unsigned char dtoa(char c1);
/****************************************/
// 主函数
/****************************************/
void main(void) {
/*当外接16MHz晶振,单片机复位后,默认内部总线时钟为16MHz/2=8MHz*/
//初始化SCI口
SCI_init();
SCISendHex(0xB9);
SCISendString("\r\n");
for(k=0;k<=14;k++){
SCISendChar(dtoa((atd0_da[k]&0xF0)>>4));
SCISendChar(dtoa((atd0_da[k]&0x0F)));
}
SCISendString("\r\n");
DDRB = 0xff;
PORTB = 0XFF;
for(;;) {} /*wait forever */
} //END OF MAIN
/****************************************/
// SCI相关函数实现
/****************************************/
void SCI_init(void) {
SCI0BDH = 0;
SCI0BDL = 52; //设定波特率为(8MB/16/52)=9600
SCI0CR2 = 0x0c; //使能发送和接受功能
}
void SCISendChar(char c1){
while(SCI0SR1_TC==0); //查发送完标志
SCI0DRL = c1;
}
void SCISendString(char *pc1)
{
while((*pc1)!=0){
SCISendChar(*pc1);
pc1++;
}
}
void SCISendHex(char c1){
SCISendChar(dtoa((c1&0xF0)>>4));
SCISendChar(dtoa((c1&0x0F)));
}
unsigned char dtoa(char c1){
return(c1>=10)?(c1+0x37)c1+0x30);
} |
|