涉及乐曲编程时,就必须了解定时器/计数器的设置。一般作为定时器选用16位计数器,这时最大定时时间就是机器周期时间×65536。T/C=0为定时器方式,T/C=1为计数器方式。M1 M0是选择定时器/计数器工作模式位:定时控制寄存器其各位标志如下:MSB表示最高有效位,LSB表示最低有效位。......
2023-11-07
一般定时器/计数器的计数功能是依靠(TC0/TC1)外部脉冲输入到芯片P3.4和P3.5引脚的脉冲计数来实现的。计数器的计数脉冲是对一个有效计数脉冲(前1个机器周期为高电平、后1个机器周期为低电平)进行计数器加1,累积计数个数。一般使用中,当累积到计满溢出时产生计数中断,执行中断控制程序。若一个外部计数脉冲就能实现一个中断请求,执行一个中断控制程序,则计数器每对外部计数脉冲计数一次就执行一次中断。
另外,定时器/计数器的计数功能也可以对内部脉冲计数实现。其计数方法与定时中断方法相同,因为定时器/计数器(TC0/TC1)的定时功能是依靠计数实现的。
1.【例3-59】 每按下一次小键盘上的“+1”键,8个灯往返闪烁一次的源程序
实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,当单片机运行该程序后,每按下一次小键盘上的“+1”键,8个灯往返闪烁一次。
程序点评:程序中使用了计数器0,对应的外部脉冲输入端是P3.4,并选择了计数器工作方式2。计数溢出采用中断方式。因为计数初始值TH0=0FFH,TL0=0FFH。所以,每当有一个外部计数脉冲就产生一次中断,8个灯往返闪烁一次。计数0中断程序入口时000BH,IE赋值总中断、计数中断、外中断开启。
2.编程练习
【例3-60】 计数器源程序(每按下一次小键盘上的“+1”键,显示器加1计数显示的源程序)
按项目要求设置计数器各寄存器初始值如下:
1)确定TMOD值。选用T/C0做定时器,工作方式选择工作方式3,即8位定时器。
TMOD=0000 0110B=06H。
2)计算定时常数。
项目要求当每按下一次小键盘上的“+1”键计数器就对外部计数脉冲计数一次,执行一次中断,则显示器加1计数显示。因为计数初始值为TH0=0FFH,TL0=0FFH。
3)确定TCON值。其中TR0作为T/C0的启动在程序中设置。TF0溢出执行计数中断。
4)中断允许控制寄存器IE值。中断总允许EA=1,计数中断允许ET0=1,允许外中断方式EX0=1,则IE=83H。
5)确定IP值。因只有一个中断,可以不设置优先级,仍保持复位状态IP=00H。
6)确定中断服务程序地址入口000BH。
7)源程序如下:
实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序后,每按下一次小键盘上的“+1”键,显示器就会加1显示计数。安装在单片机上的两个数码管从“00”开始累加1显示,到“99”后循环。(www.chuimin.cn)
程序点评:程序中使用了计数器0,对应的外部脉冲输入端是P3.4,并选择了计数器工作方式3。计数溢出采用中断方式。因为计数初始值TH0=0FFH,TL0=0FFH。所以,每按下一次小键盘上的“+1”键就有一个外部计数脉冲,产生一次中断,显示器加1计数显示。计数0中断程序入口是000BH,IE赋值总中断、计数中断、外中断开启。程序显示单元用了数据分离处理、转换为字形码、数码管显示模块,使用了数据比较条件转移指令。
另外,对小键盘上的“+1”键的扫描识别用了P2.0位状态判断指令。连续用了两条P2.0位状态判断指令是为了有效操作。
【例3-61】 1kHz信号产生器源程序(利用单片机内部时钟脉冲计数)
单片机产生的1kHz频率信号是占空比50%的方波,高、低电平各500μs。每一个机器周期2μs计数一次,共需要计数500μs÷2μs=250次。
按项目要求设置计数器各寄存器初始值如下:
1)确定TMOD值。选用T/C0为计数器。工作方式选mode 1,即16位定时器。
TMOD=0000 0001B=01H。
2)计算定时常数。
项目要求P2.7输出频率为f=1kHz,周期为T=1/1kHz=1ms,占空比为50%,据此定时器的定时时间应为1ms/2=0.5ms。
定时常数T0=65536-(0.5×103/2)=65536-250=65286。因为T/C0由2个8位定时器组成,必须将T0分解为高8位TH0和低8位TL0,即TH0=65286/256=255=0FFH,TL0=65286-(256×255)=65286-65280=06H。
3)确定TCON值。其中TR0作为T/C0的启动在程序中设置。TF0由溢出中断。
4)中断允许控制寄存器IE值。中断总允许EA=1,计数中断允许ET0=1,IE=82H。
5)确定IP值。因只有一个中断,可以不设置优先级,仍保持复位状态IP=00H。
6)确定中断服务程序地址入口000BH。
7)源程序如下:
实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序后,安装在单片机上的蜂鸣器发出1kHz的音频信号。
程序点评:程序中使用了计数器0并选择了计数器工作方式1。计数溢出采用中断方式,中断入口为000BH。计数初始值TH0=0FFH,TL0=06H,由于选择计数器工作方式1,所以需要重新装载数据。
有关零起点学习单片机多语言编程的文章
涉及乐曲编程时,就必须了解定时器/计数器的设置。一般作为定时器选用16位计数器,这时最大定时时间就是机器周期时间×65536。T/C=0为定时器方式,T/C=1为计数器方式。M1 M0是选择定时器/计数器工作模式位:定时控制寄存器其各位标志如下:MSB表示最高有效位,LSB表示最低有效位。......
2023-11-07
定时器/计数器是MCS51系列单片机芯片内的一个组件,简写为T/C。它有2个相同的定时器/计数器,称为定时器/计数器0和定时器/计数器1。实际上定时器/计数器是一个计数器,可以8位、13位或16位计数,对应的两组4个8位计数器。TCON定时控制位共4位。TR0=0,停止定时器/计数器工作;TR0=1,开启定时器/计数器工作。TMOD是专业寄存器,用于设定定时器/计数器0和定时器/计数器1的工作方式,只能用字节传送设置。......
2023-11-07
所谓独立键,就是各个按键的功能线之间没有电的连接,每个按键独立存在。这种连接方法一只按键要占用一个接口。常用于键少的应用场合。若再次查询按键并没有闭合,则认为按键未被按下,无效。流程图的作用就是将一个应用任务转化为计算机的工作流程。这是用计算机解决应用问题的必要前提。对于任何程序,只有三种基本结构,即顺序结构、分支结构和循环结构。反复执行,则P1.0反复取反状态,表示程序执行正确。......
2023-11-07
第二行程序的开始地址是02,第二条机器码程序有两个指令有分别是“0B”、“05”,其中02地址单元中存放“0B”指令,03地址单元中存放“05”数据。第三条程序的开始地址是04,第三条机器码程序有三个指令有分别是“12”、“05”、“02”。......
2023-11-07
单片机是将CPU+ROM+RAM+I/O集成在一块小小的芯片上,这种结构使用非常灵活,可以“嵌入”任何控制对象内,组成嵌入式系统。单片机中的片内程序存储器是一种可编程可擦除的只读存储器。通用计算机的CPU主要是进行高速数据处理。单片机体积很小,可以直接“嵌入”到机器的控制板上,实际上就是将计算机系统嵌入到机器内,组成所谓的“嵌入式系统”。......
2023-11-07
安装在单片机上的两个数码管从“00”开始累加1显示,到“99”后循环。需要讲解的指令重点是累加器A加1赋值指令“INC A”和十进制变换指令“DA A”。低位数码管逐段循环显示源程序实例程序运行效果:在完成了源文件建立、汇编、下载的步骤后,单片机自动运行该程序。......
2023-11-07
位运算是以运算量的二进制位为单位所进行的运算。一般位逻辑运算都是以十六进制数形式进行。在右移运算中,左端的空位补0,右端移出位则舍弃。按条件将a=0x85,b=0x36,执行位运算具体如下:P3=a<<1,左移1位后a=00001010=0x0A显示正确,左位取消,右位补0。......
2023-11-07
尽管单片机有许多特点,但仍然属于计算机的范围。这种特殊的语言就是程序设计语言,也就是由一系列语句组成的程序。程序设计语言从原理上可分为机器语言、汇编语言和高级语言三种类型,单片机也不例外。由于汇编语言指令具有直接对应机器语言指令的特点,因而生成的机器代码效率高,执行速度快,至今在单片机程序设计中仍被采用。在众多高级语言中,只有C语言成了应用于单片机系统的高级语言。......
2023-11-07
相关推荐