导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[fengjian99]单片机设计



No.46810
作者:fengjian99
邮件:gj_92839@163.com
ID:109039
登陆:21次
文章数:33篇
最后登陆IP:113.97.226.101
最后登陆:2010/10/26 15:08:32
注册:2008/4/24 14:26:22
财富:296
发帖时间:2008/5/27 15:09:48
发贴者IP:121.15.112.158
标题:fengjian99:单片机设计
摘要:No.46810单片机设计 通信协议: 第1字节,MSB为1,为第1字节标志,第2字节,MSB为0,为非第一字节标志,其余类推……,最后一个字节为前几个字节后7位的异或校验和。

测试方法:可以将串口调试助手的发送框写上 95 10 20 25,并选上16进制发送,接收框选上16进制显示,如果每发送一次就接收到95 10 20 25,说明测试成功。

//这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收
 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的

#include 
#include 
#define INBUF_LEN 4 //数据长度 

unsigned char inbuf1[INBUF_LEN]; 
unsigned char checksum,count3; 
bit read_flag= 0 ;

 void init_serialcomm( void )
 { 
     SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr 
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload 
PCON |= 0x80 ; //SMOD=1; 
TH1 = 0xF4 ; //Baud:4800 fosc=11.0592MHz 
IE |= 0x90 ; //Enable Serial Interrupt 
TR1 = 1 ; // timer 1 run 
// TI=1; 

//向串口发送一个字符 

void send_char_com( unsigned char ch) 
{

SBUF=ch; 
while (TI== 0 ); 
TI= 0 ; 

//向串口发送一个字符串,strlen为该字符串长度 

void send_string_com( unsigned char *str, unsigned int strlen) 

   unsigned int k= 0 ; 
   do 

   send_char_com(*(str + k)); 
   k++; 
} while (k   < strlen); 
}

 //串口接收中断函数 

void serial () interrupt 4 using 3 

   if (RI) 

   unsigned char ch; 
   RI = 0 ; 
   ch=SBUF; 
   if (ch>   127 ) 

   count3= 0 ; 
   inbuf1[count3]=ch; 
   checksum= ch- 128 ; 

else

   count3++; 
   inbuf1[count3]=ch; 
   checksum ^= ch; 
   if ( (count3==(INBUF_LEN- 1 )) && (!checksum) ) 

   read_flag= 1 ; //如果串口接收的数据达到INBUF_LEN个,且校验没错,
 //就置位取数标志 




 ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:14毫秒 最大:5186毫秒 查询6次