- 1、本文档共111页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机的C语言的应用程序设计1.ppt
编程示范 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 ;
文档评论(0)