APP下载

基于单片机C的教学探究

2016-03-29刘秀芬

现代农村科技 2016年4期
关键词:C语言寄存器中断



基于单片机C的教学探究

近几年,随着单片机和Keil C等开发工具的发展,单片机的教学原来经常使用的汇编语言,慢慢被高级C语言所代替,因为C语言具有很强的功能性、结构性、可移植性,并且接近自然语言,可读性好,程序开发可以摆脱硬件不必要的接触,调试维护更容易,尤其是在Proteus仿真软件与KeilC51软件平台的联调下,学生学起来更加得心应手。

1 学好标准C语言

虽然是单片机C语言,但是与标准C语言的很多用法都相同,而且对初学者来说用VC调试程序比用Keil C51软件要方便得多,要打好C语言的基础,通常要做到以下几点:

1.1熟练掌握数据类型的定义及使用。尤其是整型数据、字符型数据、整型数组、字符型数组。在单片机C语言中整型、字符型变量的指针等用的最多,并且在够用的情况下,尽可能用 unsinged char,这种类型代码生成时间最短,程序生成代码时间越短运行速度越快。

1.2灵活熟练掌握顺序结构、循环结构、选择结构。掌握三结构的前提是能熟练画出流程图。在单片机C语言中,不精确延时,常用循环,选择结构中的if语句、if else语句、switch语句的也很多,所以要灵活掌握。

1.3灵活掌握函数调用。在单片机C语言中,函数调用可以使主函数看起来简单明了,可读性强,所以函数原型、函数值的返回一定要掌握扎实。

1.4学好C语言程序设计。要多看题,多做题,尤其初学者一定要多看别人写的好程序,再举一反三练习,争取用最优的算法写出程序。

2 标准C语言与单片机C语言的不同点

2.1C51数据类型及存储。增加了“bit”“sbit”位类型和特殊功能寄存器类型Sfr和Sfr16,“bit”是对于任意位类型变量的定义,“sbit”是对特殊寄存器类型位变量的定义。Sfr定义8位C51中所有寄存器,Sfr16定义16位的特殊功能寄存器。

2.2C51定义了变量的存储区。如data,bdata,idata,pdata,xdata,code区域,可以根据实际情况选择某一存储区,缺省时变量的存储区决定于程序所选取的编译模式,在小模式下缺省存储区为data区域。

2.3C51的输入输出。在标准C语言中有专门的输入、输出函数scanf,printf,而单片机C51中这两个函数对应的是串行口的输入、输出,并不是键盘的输入和显示器的输出。

2.4C51函数定义。除了中断函数外,其他函数定义、调用与标准C函数相同。中断函数既不传递参数,也不接收返回值,要明确中断源,写对中断号。

3 掌握单片机的硬件知识

单片机C语言程序开发可以摆脱硬件不必要的接触,但是是在硬件电路的基础上编程,因此要具备一定的硬件基础知识。

3.1掌握硬件正常工作的基本参数。这不需要学生记住,只要做到会查找即可。例如单片机的输入输出口P0、P1、P2、P3最大输出电流是多少,我们在P0^0口接一个电流是10 mA的LED灯行吗?接一个220 V、50 Ω的白炽灯能亮吗?前者可以,后者肯定不行,因为电流不能满足要求,如果是自己设计电路,元器件要求说明书里都有,或上网查找。硬件电路是在每个器件正常工作的基础上编程的。3.2硬件要会用。其实编程时用到的硬件知识并不是很多,但编程时用到哪些硬件的寄存器一定不要弄混。例如中断,用的哪个中断,中断号是多少,用到哪些寄存器的哪几位,除了在书上查看之外,要把中断的结构图熟记于心,不要死记硬背,要通过多练习掌握。同样像定时器、串口、AD口等都需要这样练习,掌握编程时用到哪些寄存器的哪些位即可。

4 熟练掌握Proteus仿真软件

通过Proteus仿真软件把硬件电路画好,硬件保证在正常的工作参数下工作。

4.1熟练掌握Keil C51软件及与Proteus仿真软件的联调。硬件知识会了,C语言也没有问题了,我们通过Keil C51软件平台就可写单片机C语言了。熟练掌握工程新建,添加C文件,程序调试,没问题后再把生成的HEX文件装载到Proteus画好的电路中的单片机中仿真。若没有问题所编程序的结果就展现在我们眼前了。

4.2鼓励学生自己焊接电路板。虽然Keil C51软件与Proteus软件联调能仿真,但毕竟与现实不能完全一致,在仿真中不会出现的问题,实际当中可能会出现,例如灯两端电压太高,实际烧毁了,而仿真中可能还是亮的。

总之,学好单片机C语言,不仅要学好标准C语言的知识,还要学好硬件知识,而且要在熟练掌握VC、Keil C51软件与Proteus软件的基础上,学好C语言的知识和硬件知识。

061001河北沧州师范学院机电工程系刘秀芬

猜你喜欢

C语言寄存器中断
STM32和51单片机寄存器映射原理异同分析
基于Visual Studio Code的C语言程序设计实践教学探索
Lite寄存器模型的设计与实现
51单片机C语言入门方法
基于FPGA的中断控制器设计*
基于C语言的计算机软件编程
跟踪导练(二)(5)
千里移防,卫勤保障不中断
高职高专院校C语言程序设计教学改革探索
FPGA内嵌PowerPC的中断响应分析