基于定时/计数器8253芯片的C语言与汇编语言开发探讨

时间:2022-10-16 08:04:27

基于定时/计数器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语言作为一种面向结构的语言对嵌入式系统开发的优胜性,希望越来越多的初学者在微机原理和接口的实验课上,采用C 语言进行开发,削减代码量,提高效率。今后使用中也可以使用C 语言与汇编语言进行混合编程开发设计,不仅具有C 语言与汇编语言编程设计中的优势特征,并且对于两种语言编程设计中的局限性问题,也有相互的补充与改进,具有较好的灵活性,并且编程开发设计速度快、效率高,有很大的编程开发设计应用优势。

【参考文献】

[1]冯博琴.微型计算机原理与接口技术(第3版).北京:清华大学出版社,2011.

[2]沈美明.IBM-PC汇编语言程序设计(第2版).北京:清华大学出版社.2013

[3]谭浩强.C 程序设计(第三版).北京:清华大学出版社,2005.

【作者简介】

李忠武(1976—),男(汉族),云南保山人,保山学院 本科,讲师,主要研究方向:计算机科学。

上一篇:基于系统理论的高职院校数学课程改革要点分析 下一篇:景点门票编译的功能主义模式研究