定时器/计数器是MCS51系列单片机芯片内的一个组件,简写为T/C。它有2个相同的定时器/计数器,称为定时器/计数器0和定时器/计数器1。实际上定时器/计数器是一个计数器,可以8位、13位或16位计数,对应的两组4个8位计数器。TCON定时控制位共4位。TR0=0,停止定时器/计数器工作;TR0=1,开启定时器/计数器工作。TMOD是专业寄存器,用于设定定时器/计数器0和定时器/计数器1的工作方式,只能用字节传送设置。......
2023-11-07
所谓独立键,就是各个按键的功能线之间没有电的连接,每个按键独立存在。这种连接方法一只按键要占用一个接口。常用于键少的应用场合。作为机械按键还有一特点,即在刚按下或抬起时的瞬间,有极短时间的抖动,这种抖动会影响程序对按键状态的查询,导致误判。因此,在查键程序开始后第一次查询若获知按键按下,必须延时10~20ms再次查询,若再次查到按键被按下,才可确认。若再次查询按键并没有闭合,则认为按键未被按下,无效。具体流程如图4-10所示。
流程图的作用就是将一个应用任务转化为计算机的工作流程。这是用计算机解决应用问题的必要前提。这也被称为算法,是实际编程的依据。特别对较复杂的任务,一个好的流程图是非常重要的。对于任何程序,只有三种基本结构,即顺序结构、分支结构和循环结构。由于实现的任务不同,对每一个程序,可以包括一个或几个不同类型结构。对于一个流程图的实现,可以用不同的程序语言。由于程序语言的特点和功能不同,解决任务的能力也不同。
图4-10 键消抖动流程图
1.【例4-37】 单键开合控制
(1)编辑C语言源程序
(2)编译
(3)执行
1)软仿真。
①单击“调试”图标,进入软调试状态。
②调出P2/P1窗口。使P2.0输入为0,相当于+1键按下,则P1.0=0,相当于灯D0亮。使P2.0输入为1,相当于+1键抬起,则P1.0=1,相当于灯D0灭。反复执行,则P1.0反复取反状态,表示程序执行正确。
2)下载到实验。按+1键,灯D0亮,键抬起。再按+1键,灯D0灭,键抬起。如此反复操作。当键抬起后,灯仍保持原状态。注意,使P2.0=0时,必须输入/输出全为0,若只输入为0,输出仍为1,等于键并未按下,无效(”√”表示1,“ ”空白表示0)。
(4)程序点评
本例练习按键控制。当查询到键按下时,进入功能执行。完成后必须再次查询键是否抬起。否则会出现错误。
2.【例4-38】 多键控制。按+1键,灯D0亮。按-1键,灯D1亮。按H键,灯D2亮。
(1)编辑C语言源程序
1)流程图,如图4-11所示。(www.chuimin.cn)
图4-11 流程图
2)程序
注:程序注释中,INC为+1键,DEC为-1键,H为H键。
(2)编译
(3)执行
1)软仿真。
①单击“调试”→“开始/停止调试”进入调试状态,米黄色图标指向第5语句。
②单击“外部设备”→“I/O-Port”→“Port 1/Port 2”,显示P1及P2窗口,表示已经准备好观察条件。
③设P2.0=0。相当于按下+1键。
④单击“单步”,由于P2.0=0,所以a=0xFE成立,灯D0=0。
⑤重复点击“单步”,程序进入key_ up()。置P2.0=1,则表示键已抬起,跳出循环。
⑥按上述方法,可以模拟-1键和H键按下/抬起的效果,在此不再重复。
2)下载到目标机。按前述方法进行。程序执行后,按+1键,灯D0亮,抬起。按-1键,灯D1亮,抬起。按H键,灯D2亮,抬起。
(4)程序点评
通过端口模拟键的按下和抬起,证明程序可以完成预定任务。优点是在仿真环境下可以方便地反复运行,并修改程序,反复编译,直到程序达到预定目标,而且不必担心硬件质量的影响。
有关零起点学习单片机多语言编程的文章
定时器/计数器是MCS51系列单片机芯片内的一个组件,简写为T/C。它有2个相同的定时器/计数器,称为定时器/计数器0和定时器/计数器1。实际上定时器/计数器是一个计数器,可以8位、13位或16位计数,对应的两组4个8位计数器。TCON定时控制位共4位。TR0=0,停止定时器/计数器工作;TR0=1,开启定时器/计数器工作。TMOD是专业寄存器,用于设定定时器/计数器0和定时器/计数器1的工作方式,只能用字节传送设置。......
2023-11-07
位运算是以运算量的二进制位为单位所进行的运算。一般位逻辑运算都是以十六进制数形式进行。在右移运算中,左端的空位补0,右端移出位则舍弃。按条件将a=0x85,b=0x36,执行位运算具体如下:P3=a<<1,左移1位后a=00001010=0x0A显示正确,左位取消,右位补0。......
2023-11-07
第二行程序的开始地址是02,第二条机器码程序有两个指令有分别是“0B”、“05”,其中02地址单元中存放“0B”指令,03地址单元中存放“05”数据。第三条程序的开始地址是04,第三条机器码程序有三个指令有分别是“12”、“05”、“02”。......
2023-11-07
计数器的计数脉冲是对一个有效计数脉冲进行计数器加1,累积计数个数。其计数方法与定时中断方法相同,因为定时器/计数器的定时功能是依靠计数实现的。计数0中断程序入口时000BH,IE赋值总中断、计数中断、外中断开启。项目要求当每按下一次小键盘上的“+1”键计数器就对外部计数脉冲计数一次,执行一次中断,则显示器加1计数显示。TF0溢出执行计数中断。程序点评:程序中使用了计数器0并选择了计数器工作方式1。......
2023-11-07
单片机是将CPU+ROM+RAM+I/O集成在一块小小的芯片上,这种结构使用非常灵活,可以“嵌入”任何控制对象内,组成嵌入式系统。单片机中的片内程序存储器是一种可编程可擦除的只读存储器。通用计算机的CPU主要是进行高速数据处理。单片机体积很小,可以直接“嵌入”到机器的控制板上,实际上就是将计算机系统嵌入到机器内,组成所谓的“嵌入式系统”。......
2023-11-07
安装在单片机上的两个数码管从“00”开始累加1显示,到“99”后循环。需要讲解的指令重点是累加器A加1赋值指令“INC A”和十进制变换指令“DA A”。低位数码管逐段循环显示源程序实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。......
2023-11-07
以上几方面导致了在嵌入式系统中应用高级语言变得非常必要。如何让读者较容易的具备嵌入式C语言的基本应用技能,从而为大量学习应用实例创造条件是本书的一个特点。嵌入式C语言与被控对象结合紧密,编程除具有标准C语言的特点外,与标准C语言相比,还有如下一些要求:1)对一些关键字进行了一定的扩展。......
2023-11-07
尽管单片机有许多特点,但仍然属于计算机的范围。这种特殊的语言就是程序设计语言,也就是由一系列语句组成的程序。程序设计语言从原理上可分为机器语言、汇编语言和高级语言三种类型,单片机也不例外。由于汇编语言指令具有直接对应机器语言指令的特点,因而生成的机器代码效率高,执行速度快,至今在单片机程序设计中仍被采用。在众多高级语言中,只有C语言成了应用于单片机系统的高级语言。......
2023-11-07
相关推荐