- 4
- 0
- 约1.92万字
- 约 111页
- 2018-01-13 发布于湖北
- 举报
推荐单片机的C语言应用程序设计
编程示范 1。指定指针的存储类型和指向变量的类型的示范。特别存储类型为Code的时候,要注意其指向变量是否具有可读写性。 2。常数做指针时的示范。注意应包含absacc.h头文件,具体定义方式。 编程示范 有关参数传递时使用的存储单元。 1。单个形参为整型时,传递细节。 2。第一个为double类型时,第二个参数为uchar类型时,传递的细节。 3。同时观察被调函数返回值的存放单元。 Cx51运算符、表达式及其规则 +、-、*、/,% 、、=、=、==、!= 、||、! 、|、^、~、《、》 编程示范:主要演示逻辑运算类的运算符。 7.9.3 串行口使用的C语言编程 例6 单片机fosc=11.0592 MHz,波特率为9600,各设置32字节的队列缓冲区用于发送接收。设计单片机和终端或另一计算机通信的程序。 单片机串行口初始化成9600波特,中断程序双向处理字符,程序双向缓冲字符。背景程序可以放入和提取在缓冲区的字符串,而实际传入和传出SBUF的动作由中断完成。 Loadmsg 函数加载缓冲数组,标志发送开始。缓冲区分发(t)和收(r)缓冲,缓冲区通过两种指示(进in和出out)和一些标志(满full,空empty,完成done)管理。队列缓冲区32字节接收缓冲(r_buf)区满,不能再有字符插入。当t_in=t_out,发送缓冲区(t_buf)空,发送中断清除,停止UART请求。具体程序如下: # include reg51.h # define uchar unsigned char uchar xdata r_buf[32] ; /* item1 */ uchar xdata t_buf[32] ; uchar r_in , r_out , t_in , t_done ; /* 队列指针 */ bit r_full , t_empty , t_done ; /* item2 */ code uchar m[ ]={ this is a test program \r\n } ; serial ( ) interrupt 4 using 1 /* item3 */ {if( RI ~ r_full ) {r_buf[r_in]=SBUF ; RI=0 ; r_in= ++r_in ox1f ; if ( r_in= =r_out ) r_full=1; } else if (TI ~t_empty ) {SBUF=t_buf [t_out] ; TI=0; t_out = ++ t_out 0x1f ; i f ( t_out= =t_in ) t_empty=1 ; } else if (TI ) { TI=0; t_done=1 ; } } void loadmsg (uchar code * msg ) /* item4 */ {while ((*msg !=0 ) (((( t_in+1)^t_out ) 0x1f ) !=0 )) / *测试缓冲区满 */ { t_ buf [t_in]= * msg ; msg++ ; t_in = ++ t_in 0x1f ; if ( t_done ) {TI = 1 ; t_empty =t_done =0 ; /* 完成重新开始 */ } } } void process (uchar ch ) { return ; } / * item5 */ /* 用户定义 */ void processmsg ( void ) /* item6 */ {while ((( r_out+1 ) ^ r_in) !=0 ) /* 接收非缓冲区 */ {process ( r_buf [r_out ] ) ; r_out= ++r_out 0x1f ; } } main ( ) /* item7 */ {TMOD=0x20 ;
您可能关注的文档
最近下载
- 江苏省安全员C2证(土建安全员)取证考试题含答案.doc VIP
- Global Mapper系列教程之二十.doc VIP
- 港口及加工物流区建设项目商业计划书.docx
- JB_T 10297-2014 温室加热系统设计规范.pdf VIP
- 《HGT2328-2006-工业硫代硫酸钠》.pdf VIP
- 新人教版小学数学四年级上册期末复习知识点归纳.doc VIP
- 2026年最新加油站安全员证模拟考试题及答案.doc VIP
- 《智能优化算法》课件.ppt VIP
- 2025美国心脏协会和美国儿科学会新生儿复苏、儿童基础生命支持和儿童高级生命支持指南更新解读.pptx VIP
- 2025年KOC达人合作模式创新策略研究.docx VIP
原创力文档

文档评论(0)