- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于定时计数器8253芯片C语言与汇编语言开发探讨
基于定时计数器8253芯片C语言与汇编语言开发探讨
【文章摘要】
微型计算机原理与接口技术是电子信息类专业的一门专业必修课程,对掌握微机的工作原理和接口应用尤其重要。本文以8253 为例,主要结合C 语言与汇编语言进行计算机程序编写设计中各自的特征优势,从C语言角度和汇编角度探讨接口芯片的编程。
【关键词】
微机原理;C 语言;汇编语言;接口
0 引言
微型计算机原理与接口技术是电子信息类专业的一门专业必修课程,对掌握微机的工作原理和接口应用尤其重要。本文以8253 为例,主要结合C 语言与汇编语言进行计算机程序编写设计中各自的特征优势,从C语言角度和汇编角度探讨接口芯片的编程。
1 定时/计数器8253芯片知识点描述
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
1.1 速率波发生器
进入这种工作方式,输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,保持为高电平不变;待计数值减到“1”和“0”之间,将输出宽度为一个周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,将输出一定频率的负脉冲序列,其脉冲宽度固定为一个周期,重复周期为周期的倍。时序波形如图1所示。
1.2 方波发生器
任一通道工作在这一工作方式时,只在计数值为偶数,则可输出重复周期为、占空比为1∶1的方波。进入工作方式时,输出低电平,装入计数值后,立即跳变为高电平。如果当前GATE为高电平,则立即开始减“1”计数,保持为高电平,若为偶数,则当计数值减
到时,跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值,实现循环计数。这时端输出的周期为n×周期,占空比为1∶1的方波序列;若为奇数,则端输出周期为周
期,占空比为:的近似方波
序列。时序波形如图2所示。
1.3 使用C语言的优势
语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。
1.4 使用汇编语言的优势
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。
总之,对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。
2 实例:C 语言方式下和汇编语言下控制8253
8253控制端口地址为303H;计数器0地址为300H;计数器1地址为301H;计数器2地址为302H。
用C语言程序实现,则程序段为:
outportb(0x303,0x56) ;//56H,选择计数器1,低8位读写,方式3(方波发生器),二进制计数。
outportb(0x301,8) ;// 向计数器1 写入低8位初值8H。
outportb(0x303,0x94) ;// 向8253 控制端口写控制字94H。选择计数器2,低8位后读写,方式2(分频脉冲发生器),二进制计数。
outportb(0x302,6) ;// 向计数器2 写入低八位初值6H。
如果用汇编语言实现,则程序段为:
MOV DX,303H
MOV AL,56H
OUT DX,AL
MOV DX,301H
MOV AL,8
OUT DX,AL
MOV DX,303H
MOV AL,94H
OUT DX,AL
MOV DX,302H
MOV AL,6
OUT DX,AL
从中可以直观地可以看出,如果使用汇编语言对8253 写入控制字MOV DX,303H、MOV AL,36H和OUT DX,AL三条语句完成,而且需要3个寄存器,但由于CPU内部资源中寄存器有限,它属于最珍贵的资源寄,使用汇编容易造成寄存器资源紧张;而用C 语言只需调用outport函数,C语言的代码长度短了很多,并且也方便初学者掌握,使初学者在嵌入式软件开发上产生更多的兴趣,为大型嵌入式软件的开发奠定坚实的基础。
3 结束语
根据本文比较C语言和汇编语言对8253 的开发,会让更多的初学者明白C语言作为一种面向结构的语言对嵌入式
原创力文档


文档评论(0)