求助80C196kd串口通讯 点击:474 | 回复:0



lionlicn

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2004年4月08日
发表于:2004-04-08 12:03:00
楼主
程序如下 #pragma model(kd) #include <kd_sfrs.h> #include <kd_funcs.h> #include <serial.h> //串口初始化 void serialinital(void) { disable(); //清空发送寄存器 sbuf_tx=0; //选择串口方式 ioc1=ioc1|0x20; //且方式0\发送使能 sp_con=0x00; //设置串口波特率9600 baud_rate=0x40; baud_rate=0x83; //接收使能 sp_con=0x08; //读拨位开关 while((sp_stat&0x40)==0){}; SWITCHCODE=sbuf_rx; //开始接收数据 if( SWITCHCODE&0x080) { //设置串口模式1,波特率9600 baud_rate=0x67; baud_rate=0x80; sp_con=0x09; sp_stat=0x00; //设置中断 int_mask1=0x03; } enable(); //开中断 } //串口接收中断处理程序 void Receive_ISR(void) { //读接收字符到缓存 unsigned char *Addr; if(sp_stat&0x40) { int i; for(i=0;i<=1;i++) { com.rxdata=sbuf_rx; com.temp[i]=com.rxdata; } //CRC校验码比较\正确则存入地址0x4000开始 com.CRC=MarkCrc(&com.temp[0],8); if(com.CRC&com.temp[1]) { Addr=(unsigned char)0x4000; *Addr=com.temp[0]; *Addr++; } } //回送信息码 sp_con=0x09; } //串口发送中断处理程序 void Transmit_ISR(void) { sbuf_tx=com.temp[0]; //置接收 sp_con=0x09; } //主程序 void main(void) { serialinital(); while(1); } 经编译连接后程序无错,但CPU无法运行(以加了cstart.obj连接)


热门招聘
相关主题

官方公众号

智造工程师