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



No.42955
作者:dingji534
邮件:dingji534@sohu.com
ID:98069
登陆:4次
文章数:30篇
最后登陆IP:123.120.18.33
最后登陆:2011/1/13 14:53:09
注册:2008/1/8 15:15:36
财富:110
发帖时间:2011/1/13 14:53:09
发贴者IP:123.120.18.33
标题:dingji534:串口液晶
摘要:No.42955串口液晶 C51开发HMI指南(dingji534@sohu.com)
1.串口通信处理
//串口的处理,串口接收采用中断方式,串口发送采用查询方式
sbit TIFLG=0;     //串口发送标记
sbit HMIFLG=0; //触控界面数据接收标记
uchar data HMI_Page,HMI_Key;  //触控界面传回来的当前页面位置和按键编码 
uchar xdata cmd[8];
void Serial_Int(void) interrupt 4
{    if(TI==1)
{   TI=0; 
 TIFLG=1;}   //TIFLG在作为其它程序的查询标记
 if(RI==1)
{   cmd[0]=cmd[1];  //触控界面下,接收触摸按键数据 AA 78 K0 K1 CC 33 C3 3C
cmd[1]=cmd[2]; //采用移动窗口方式接收
 cmd[2]=cmd[3];
cmd[3]=cmd[4];
 cmd[4]=cmd[5];
cmd[5]=cmd[6];
 cmd[6]=cmd[7];
cmd[7]=SBUF;
RI=0;} if((cmd[0]==0xaa)&&(cmd[1]==0x78)&&(cmd[4]==0xcc)&&(cmd[5]==0x33)&&(cmd[6]==0xc3)&&(cmd[7]==0x3c))
{ HMIFLG=1;   //置位触控界面标记,主程序中查询处理
HMI_Page=cmd[2];
HMI_Key=cmd[3];}
}   

//查询方式发送数据到串口
//发送一个字节
 void Txbyte(uchar i)        
{TIFLG=0;
SBUF=i;
While(TIFLG==0);
TIFLG=0;
}

//发送一个以0xCC 0x33 0xC3 0x3C为结束标记的数据串到串口
 void Txstring(uchar *str)        
{uchar i0,i1,i2,i3;
i0=0;
i1=0;
i2=0;
i3=0;
TIFLG=0;
while(!((i0==0xcc)&&(i1==0x33)&&(i2==0xc3)&&(i3==0x3c)))
{i0=i1;
I1=i2;
I2=i3;
i3=*str;
str++;
SBUF=i3;
While(TIFLG==0);
TIFLG=0;}
}

 
2.I/O后台程序的处理
使用一个定时器产生一个定时器中断,来刷新I/O状态、采集设备信息,或对设备的控制;
比如,我们可以使用一个100mS的定时器,定时来进行A/D转换,采集温度信息;
对于多路信息的采集,如果每一路的处理时间比较长,就应该把任务分解成“节拍”来分成几次中断来执行,以保证其它中断程序能够被可靠执行,并提高CPU ......

>>返回讨论的主题



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


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

   




老古网执行:16毫秒 最大:484毫秒 查询6次