单片机开发中的一些实用技巧单片机.pdfVIP

单片机开发中的一些实用技巧单片机.pdf

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

单片机开发中的一些有用技巧-单片机

很多伴侣正在学习单片机开发技术,但开发中免不了要遇到这样、

那样的问题,有些问题可能无碍大局,但有一些问题却直接影响到产

品的成本、体积、性能。这里介绍笔者的几个技巧,期望对大家的工

作有挂念。

一.C语言中嵌入汇编语言

单片机开发中,通常我们使用C语言编写主程序,这样可以充

分借助C语言工具供应的运算库函数及强大的数据处理力量。但C语

言的可控性不及汇编语言,在有些对时序要求严格的处理上,我们还

需用机敏性更强的汇编语言来编写。上海AVR单片机培训这样就产生

了C语言和汇编语言混合编程的问题,一般分成三种方式:1.汇编语

言调用C语言函数;2.C语言调用汇编语言;3.C语言中嵌入汇编

语言。这里我们主要介绍第3种,即C语言中嵌入汇编语言。

下面的一段程序是主程序调用精确的205μS延时子程序并使

P1.0交替输出高、低电平的方波。

/*程序名test.c*/

#includeP晶振频率12.000MHz

/****************/

voiddelay(void)//延时205μS

{

#pragmaasm

MOVR0,#100

1

LOOP:

DJNZR0,LOOP

#pragmaendasm

}

/***************/

voidmain(void)//主函数,其功能使P1.0交替输出高、

低电平的方波

{

while(1)

{P1_0=!P1_0;

delay();}

}

具体实现过程为:

1.先用汇编语言编制一段延时程序,在keil开发环境中编译,

然后进行软件仿真,晶振频率的设置应和你的要求相符。仿真时留意

观看左边寄存器窗口内的时间显示,调整延时程序的参数可得到我们

需要的精确延时。

2.用C51编写主程序及延时子程序的外壳(等待嵌入汇编语

言),假定此程序名称为test.c。

3.将第1步所得的汇编延时子程序放入C51编写的延时子程序

外壳中。留意在开头及结束时分别加上#pragmaasm、#pragmaendasm

语句,这种方法是通过asm与endasm告知C51编译器,中间行不用

2

编译为汇编行。

4.依据Keil的使用方法,建立工程文件并添加源程序。

5.点击含有汇编程序的C源程序后再右击,在弹出的下拉菜单

中选中OptionsforFile‘test.c’(图1),这时消灭图2所示的

界面,勾选GenerateAssemblerSRCFile(生成汇编SRC文件)及

AssemblerSRCFile(封装汇编文件)使其有效。

6.依据项目的编译模式加载封装库文件,通常在Small模式

时为C51S.LIB(该文件在C:KeilC51LibC51S.LIB),具体见图3。

7.点击Rebuildtarget(重建全部目标文件)即可得到编译

结果(图4)。

图1

图2

图3

图4

二。用软件扩展外部中断

大家知道,51单片机的外部中断只有2个,书本上曾介绍了

一种扩展外部中断源的方法,但是需增加硬件开销(见图5)。经或

非门引入外中断源输入端(/INT0或/INT1),同时又连到某I/0口。

3

这样,每个“源”都可能引起中断,在中断服务程序中通过软件查询

便可确定哪一个是正在申请的中断源,其查询的次序则由中断源优先

级打算,这就可实现多个外部中断源的扩展。

图5

这种方法

文档评论(0)

139****1106 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档