基于C语言的MCS-51编程应用

时间:2022-10-24 09:28:36

基于C语言的MCS-51编程应用

摘要:机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

关键词:MCS-51;C语言;应用;方法

中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2011) 03-0000-02

MCS-51 Programming Application Based on C Language

Zeng Zhi

(Xianning Vocational Technical College,Xianning437100,China)

Abstract:The machine is a compilation of software source code by compiling into machine code for the MCS-51 microcontroller assembler software early A51,with the development of SCM technology continues to evolve,from assembly language to the increasingly widespread use of advanced language development,SCM Keil development software is constantly evolving software development is the most popular MCS-51 MCU software,the simulator from recent years manufacturers have announced full support for Keil to be seen.

Keywords:MCS-51;C language;Application;Method

一、对MCS-51的介绍

对无论规模大小、性能高低,计算机的硬件系统都是由运算器、储存器、输入设备、输出设备以及控制器等单元组成。在通用计算机中,这些单元被分成若干块独立的芯片,通过集成电路连接而构成一整的计算机。这成为当时这一类芯片的典型特征,因此就以Single Chip Microcomputer来称呼这一类芯片,中文译为单片机。

嵌入式计算机系统的应用越来越广泛,给我们的生活和工作带来了极大的影响。单片机是嵌入式计算机系统的CPU,是系统的控制核心。以Intel公司的8051和8052为内核的8位单片机及其衍生产品――MCS-51系列单片机经过了20多年的发展,现在已经有数百种之多,由于其具有成本低、可靠性高、集成度高、易于扩展、处理能力强等优点,在智能仪器仪表、过程控制、机电一体化系统等领域被广泛应用。在8位单片机领域,MCS-51系列单片机多年来都保持非常大的市场占有率。近些年新推出了许多各具特色的RISC单片机,如Microchip公司的PIC系列单片机和Atmel公司的AVR系列单片机等,这些新单片机具有速度高、功耗低、I/O驱动能力强等特点,并且具有一定的模拟信号处理能力,给MCS-51系列单片机带来了很大的冲击。尽管如此,经过诸如Dallas、ADI、Philips、Infineon等许多全球著名半导体公司的努力,MCS-51系列单片机中近些年也推出了许多高性能的产品。如Dallas公司(被Maxim公司收购)的DS89C420单片机采用8052内核,其速度可达50 MIPS;ADI公司的ADμ8xx系列、Maxim公司的MAX7651/52、TI公司的MSC1210、Cygnal公司的C8051Fxxx系列等都是全兼容8051或8052的混合信号单片机,它们都具有相当强的模拟信号处理能力,被称之为“混合信号单片机”。

二、单片机的外部结构

1.P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)。

2.电源VCC(PIN40)和地线GND(PIN20)。

3.高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)。

4.内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)。

5.程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)。

6.P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1。

三、查表程序设计

数据补偿、修正、计算、转换等各种功能,具有程序简单、执行速度快等优点。查表就是根据自变量x,在表格中寻找y,使y=f(x)。执行查表指令时,发出读程序存储器选通脉冲/PSEN。在MCS-51的指令系统中,给用户提供了两条极为有用的查表指令:(1)MOVC A,@A+DPTR。(2)MOVC A,@A+PC指令“MOVC A,@A+DPTR”完成把A中的内容作为一个无符号数与DPTR中的内容相加,所得结果为某一程序存储单元的地址,然后把该地址单元中的内容送到累加器A中。指令“MOVC A,@A+PC”以PC作为基址寄存器,PC的内容和A的内容作为无符号数,相加后所得的数作为某一程序存储器单元的地址,根据地址取出程序存储器相应单元中的内容送到累加器A中。指令执行完,PC的内容不发生变化,仍指向查表指令的下一条指令。优点在于预处理较少且不影响其它特殊功能寄存器的值,所以不必保护其它特殊功能寄存器的原先值。缺点在于该表格只能存放在这条指令的地址X3X2X1X0以下的00-FFH之中。表格所在的程序空间受到了限制。

四、编程实现

(一)创建一个基于对话框的应用程序

打开VC++6.0集成开发环境,选择菜单项File/New,在出现的对话框中选中Projects标签中的MFC AppWizard(exe),然后在Project Name框中填入MyCOMM(可根据需要命名),之后点OK按钮。在接着出现的对话框中选中Dialog Based项,然后点NEXT按钮。以下的各对话框都按照缺省设置,这样即可生成一个基于对话框的应用程序。在资源编程器中会出现其对话框模板。

(二)子程序的设计

1.子程序设计原则和应注意的问题,一种能完成某一特定任务的程序段。其资源要为所有调用程序共享。因此,子程序在结构上应具有独立性和通用性,在编写子程序时应注意以下问题:(1)子程序的第一条指令的地址称为子程序的入口地址。该指令前必须有标号。(2)主程序调用子程序,两条子程序调用指令:a.绝对调用指令:ACALL addr11。b.长调用指令:LCALL addr16。(3)注意设置堆栈指针和现场保护。(4)最后一条指令必须是RET指令。(5)子程序可以嵌套,即子程序可以调用子程序。(6)在子程序调用时,还要注意参数传递的问题。

2.插入MSCOMM控件,选择菜单项Project/Add to project/Components and Controls…,在弹出的对话框中选择Registered ActiveX Controls文件夹下的Microsoft Communications Control,version6.0,然后按下Insert按钮,接着会弹出一个对话框,提示生成的类名及文件名,按OK按钮即可实现控件的插入。这时在对话框的控件工具栏上会多出一个电话机模样的控件图标,Workspace的Classview中也多了一个类CMSComm。此时即可将MSCOMM控件加入到对话框模板,加入方法与其他控件一样。然后还要在对话框类中相应加入一个成员变量,此处我们将其命名为m_comm。

3.设置属性,可以在两个地方对控件的属性进行设置:(1)对话框资源编辑器中。在对话框模板上,用右键单击MSCOMM控件,然后选择Properties…菜单项,最后便可设置各项属性。此处只对以下几处进行改动,其他接受缺省设置:Rthershold:1,InputLen:1,DTREnable:不选,InputMode:1-Binary。(2)对话框类的OnInitDialog()函数中。

五、在VC++中MSCOMM控件的实现

(一)事件驱动方式

当通信事件发生时,MSCOMM控件会触发OnComm事件,调用者可以捕获该事件,通过检查其CommEvent属性便可确认发生的是哪种事件或错误,从而进行相应的处理。这种方法的优点是响应及时、可靠性高。

(二)查询方式

在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,这种方法可能更可取。

六、结语

汇编语言在实时性方面具有较大的优越性,虽然使用Keil C51可以在C语言程序中嵌入汇编代码,但是复杂度明显提高。实验证明,只要合理地运用C语言,在延时编程方面就可以达到与汇编语言相近的精度。为了获得精确的时间延迟,可通过Keil C工具的仿真功能,调整延迟量,从而得到较理想的结果。

参考文献:

[1]邵峰.MCS-51单片机地址指针及其应用.安徽科技,2009,5

[2]葛世超.在MCS-51单片机上移植μC/OS-Ⅱ.信息化研究,2010,1

[3]田野.MCS-51单片机在表决系统中的应用.山西电子技术,2010,6

[4]付向艳.浅谈MCS-51单片机原理与应用.计算机光盘软件与应用,2010,11

上一篇:浅谈高职《计算机网络》课程教学改革 下一篇:基于精益生产的ERP与MES系统集成研究