定时中断T0服务程序参考框图
第六章单片微机的定时器计数器原理及应用
中断矢量001BH
⑴T0方式3下的T0
在方式3情况下,T0被拆成二个独立的8位计数器TH0、TL0。 ▲ TL0:8位定时/计数器,使用T0原有的控制寄存器资 源:TF0,TR0,GATE,C/T,INT0,中断矢量等; ▲ TH0:8位定时器,占用T1的中断溢出标志TF1,运行控 制开关TR1,中断矢量001BH,只能对片内机器周期脉冲计数
复位后,两个寄存器全部清零。
6.3.2 定时器/计数器T2的工作方式
T2的工作方式用控制位CP/RL2(T2CON.0)和RCLK +TCLK来选择。T2有3种工作方式,如表6-2所示:捕获方式、 自动重装载方式和波特率发生器方式。
⒈ 捕获方式
在一定条件下,自动将计数器TH2和TL2的数据读入捕获寄存器 RCAP2H和RCAP2L,亦即TH2和TL2内容的捕获是通过捕获寄 存器RCAP2H和RCAP2L来实现的。其工作原理可参见图6-7。
当CP/RL2=0时,选择自动重装载方式。 若T2的中断是被允许的,则无论发生TF2=1还是EXF2 =1,CPU都会响应中断,此中断向量的地址为002BH。响应 中断后,应用软件撤除中断申请。TF2 和EXF2都是直接可寻 址位,可采用CLR TF2和CLR EXF2指令实现撤除中断申请的 功能。
触发 方式
89H IE0
中断 标志
88H IT0
触发 方式
⒊ T0、T1 的数据寄存器——TH1、TL1,TH0、TL0 ⒋ 定时器/计数器中断
⑴ 中断允许寄存器IE
⑵ 中断矢量 ⑶ 中断优先级寄存器IP
6.2.2 定时器/计数器T0、T1 的工作方式
T0:有4种工作方式可选(方式0,1,2,3)
当CP/RL2=l时,选择捕获方式。
第5章 MCS-51中断、定时计数器及串行接口
22:26
7
保护现场
课本P103
保护现场是指由于CPU执行中断处理程序时, 可能使用主程序中用过的累加器、寄存器或标志位。
为了使这些寄存器的值在中断服务程序中不被 冲掉,进入中断服务程序前,要将它们保护起来。
中断服务程序执行完,必须恢复原寄存器的内 容及原程序中断处的地址,即恢复现场和恢复断点。
22:26
课本P105
一、中断请求控制
(1) TCON中的中断请求标志位 Timer Controller
TCON为定时/计数器控制寄存器,其字节 地址为88H,可位寻址。这个寄存器除了控制定 时/计数器T0和T1的溢出中断外,还控制外部中 断的触发方式和锁存外部中断请求标志位。
图5-3 TCON中的各位定义
22:26
24
2. 中断响应过程
课本P110
CPU响应中断后,由硬件自动执行如下的功能操作:
(1)根据请求源的优先级高低,对相应的优先级状态 触发器置1,自动生成长调用指令LCALL addr16。
(2)保护断点,把程序计数器PC的内容压入堆栈。 (3)清除相应的中断请求标志位。 (4)把被响应的中断源所对应的中断服务程序入口地
…
先进后出
…
POP DPL
POP DPH
POP ACC
RETI
最后1条指令 必须是RETI
27
中断响应过程
处理文档 电话铃响 暂停文档 文档中作暂停记号 电话交谈 找出暂停记号位置 继续处理文档
执行主程序(日常事务程序) 中断申请信号有效(中断请求)
暂停执行主程序响应中断 当前PC及寄存器入栈(保护现场)
22:26
5
中断系统的基本问题
定时器工作原理
定时器工作原理通电延时型。
只要在定时的时间段内(即1分钟)定时器一直得电,则常开触电就会闭合,只要定时器不断电常开触电就会一直闭合。
定时器断电则常开触电断开101 6.1010116801图6.1定时器/计数器结构框图011011011 0265536216016553621606.2411010110104位用于T0,高4位用于T1的。
:门控位。
GATE=0,只要用软件使TR0(或TR1)置1就能启动定时器/计数器0(或定时器/计数器1);GATE=1,只有在(或)引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时器/计数器0(或定时器/计数器1)工作。
不管GATE处于什么状态,只要TR0(或TR1)=0定时器/计数器便停止工作。
:定时器/计数器工作方式选择位。
C/=0,为定时工作方式;C/=1,为计数工作方式。
、M1:工作方式选择位,确定4种工作方式。
如表6.1所示。
表6.1定时器/计数器工作方式选择【例6.1】设置定时器1工作于方式1,定时工作方式与外部中断无关,则,M0=1,GATE=0,因此,高4位应为0001;定时器0未用,低4位可随意11(因方式3时,定时器1停止计数),一般将其设为0000。
因此,指令形式为:MOV TMOD,#10H/计数器工作方式与程序设计通过对特殊功能寄存器TMOD中的设置M1、M0两位的设置来选择四种工作/计数器0、1和2的工作方式相同,方式3的设置差别较大。
工作方式0工作方式寄存器TMOD中的M1M0为:00。
定时器/计数器T0工作在方式0 16位计数器只用了13位,即TH0的高8位和TL0的低5位,组成一个13 /计数器。
当TL0的低5位计满溢出时,向TH0进位,TH0溢出时,对TF0置位,向CPU申请中断。
定时器/计数器0方式0的逻辑结构如6.2所示。
1013121312213131310612 12130106128 192211310110136.22138103213 16.32502132130 16.401200131300819210001110000085 851 140 01011 011601 6.3121312213161610612 121601061265 53621161166.51216101032130 16.6980012162169800 16.711121610103216 111011000888821202 6.41021688812812288810612 128010612256218186.825006.56.5 6.62115001022321250050050050031130 168031021031203 6.66.923821002561001233201。
定时器计数器讲解
TR1位(或TR0位)=1,启动定时器工作的必要条件。 TR1位(或TR0位)=0,停止定时器工作。 该位可由软件置“1”或清“0”。
10
6.2 定时器/计数器的4种工作方式 4种工作方式分别介绍如下。
6.2.1 方式0 当M1、M0为00时,定时器/计数器被设置为工作方式0,
这时定时器/计数器的等效逻辑结构框图如图6-4所示(以定 时器/计数器T1为例,TMOD.5、TMOD.4 = 00)。
(1)GATE=0时,A点(见图6-4)电位恒为1,B点电位仅 取决于TRx状态。TRx = 1,B点为高电平,控制端控制电子 开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B点为低 电平,电子开关断开,禁止T1(或T0)计数。
(2)GATE=1时,B点电位由INTX*(x = 0,1)的输入电 平和TRx的状态两个条件来定。当TRx=1,且INTX*=1时,B 点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。 故这种情况下计数器是否计数是由TRx和INTX*两个条件来共 同控制。
图6-1 AT89S51单片机的定时器/计数器结构框图
4
只不过计数信号的来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上
的外部脉冲进行计数(见图6-1) 定时器模式是对单片机的系统时钟信号经片内12分频后的
内部脉冲信号(机器周期)计数。由于时钟频率是定值,所 以可根据对内部脉冲信号的计数值可计算出定时时间。
本例由于采用定时器T0中断,因此需将IE寄存器中的EA、 ET0位置1。 (4)启动和停止定时器T0
实验2利用定时器T0中断延时
实验2 定时器T0中断实验目的掌握定时器相关寄存器的配置,以及定时时间的计算等实验内容定时器中断控制P1.0口输出(实现LED的亮灭),在Proteus界面观察。
实验步骤1、在Keil开发环境下建立一个工程,命名为‘定时器中断’,然后选择存储路径进行文件保存。
2、程序的编写,a.定时常数的确定定时器/计数器的输入脉冲周期与机器周期一致,为振荡频率的1/12。
本实验中时钟频率为12 MHZ,现采用中断方法来实现0.5秒延时,选用定时器T0来完成。
(用T0计时器不能直接实现0.5S的延时,实验可以通过中断延时0.05秒,然后进行10次中断后,实现LED的亮灭)时间常数可按下述方法确定:机器周期=12÷晶振频率=12/(12×106)=1us设计数初值为X,则(216-X)×1×10-6=0.05,可求得X,然后将X化为十六进制则X=3CB0H,故初始值为TH1=3CH,TL1=B0Hb.初始化程序包括定时器初始化和中断系统初始化,主要是对IE、TCON、TMOD 的相应位进行正确的设置,并将时间常数送入定时器中。
c.设计中断服务程序和主程序中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。
d.编译代码:ORG 0000HSJMP MainORG 000BHAJMP TT0 ;定时器T0的中断服务程序入口地址ORG 0030HMain : MOV TMOD ,#00000001B ,定时器T0工作在方式1CLR TR0CLR TF0MOV TH0,#60 ;(65536-50000)延时5ms的初值MOV TL0,#176MOV R7,#10 ;循环10次,5*10=50msSETB P1.0MOV IE,#00000010B ;允许T0中断SETB TR0 ;启动定时器T0SETB EA ;打开中断系统Loop: SJMP LoopTT0 : DJNZ R7,Next ;CPL P1.0 ;取反p1.0MOV R7,#10 ;重置循环次数初值Next: CLR TR0 ;关闭定时器MOV TH0,#60 ;重写定时5ms的初值MOV TL0,#176SETB TR0 ;启动定时器RETI3、搭建Proteus仿真平台,仿真平台如实验1中平台一致。
定时中断系统
T0(P3.4)
(8AH)
TH0 TL0 8FH 8EHTH1 8DH TL1 8CH 8BH 8AH 89H 88H 7 0 7 0 7 (88H) TF1 TR1 TF0 TR0 IE1 7 0 IE0 0 IT0 溢出 IT1
CPU
溢出 启 动
启 动
内部总线
工作方式 工作方式
TCON(88H)
AJMP DEL1 RESP1:CLR TR0 : MOV TMOD,#02H , MOV TH0,#06H , MOV TL0,#06H , SETB P1.1
;重置T0为500 µS定时 ;重置定时初值
;P1.1置1
CLR
P1.0
;清P1.0 ;启动定时器 ;检测第一次500 µS到否
SETB TR0 DEL2: JBC TF0,RESP2 , AJMP DEL2 RESP2:SETB P1.0 : DEL3: JBC TF0,RESP3 , AJMP DEL3 PESP3: CLR P1.1 CLR TR0 AJMP BEGIN
返回
定时/计数器方式寄存器TMOD 定时/计数器方式寄存器TMOD
INT1 INT0 (P3.3) (P3.2) 定时器T1 (8DH) (8BH)
TL1 D5 0 4 7 D
T1(P3.5)
T0(P3.4)
定时器T0 (8CH) (8AH)
TL0 D 7 10
D7
TH1 D 7 60
D3
TH0 2 7 D0
对于6MHZ的晶振频率,每 次加一操作需2 µS
源程序:
BEGIN:MOV TMOD,#06H : , MOV TH0,#0FFH , MOV TL0,#0FFH , CLR P1.1 SETB TR0 DEL1:JBC : TF0,RESP1 , ;设T0为方式2,外部计数 ;计数值为01即溢出 ; ;P1.1初值为0 ;启动计数器 ;检测外跳变信号 ;
第5章AT89S52定时器计数器
图5-2 TMOD格式
8位分为两组,高4位控制T1,低4位控制T0。 TMOD各位的功能。 (1)GATE———门控位。
0:仅由运行控制位TRx(x = 0,1)来控制定时器/计数器运 行。
1:用外中断引脚( INT0*或 INT1*)上的电平与运行控制 位TRx共同来控制定时器/计数器运行。
9
5
5.1 定时器/计数器的结构 定时器/计数器T1、T0结构如图5-1所示,T0由特殊功能
寄存器TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成。
图5-1 定时器/计数器T0、T1结构框图
6
具有定时器和计数器2种工作模式,4种工作方式(方式0、 方式1、方式2和方式3)。属于增1计数器。
定时器/计数器T0分为两个独立的8位计数器TL0和TH0, TL0使用T0的状态控制位C/T*、GATE、TR0、TF0 ,而TH0
23
被固定为一个8位定时器(不能作为外部计数模式),并使用 定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断 请求源TF1。 2.T0工作在方式3时T1的各种工作方式
P1.0输出;T2OE=0,禁止定时时钟从P1.0输出。 DCEN(D0):计数方式选择。DCEN=1,T2的计数方式
由P1.1引脚状态决定。P1.1=1,T2减计数,P1.1=0,T2加 计数;DCEN=0,计数方式与P1.1无关,同T1和T0一样,采 用增1计数。
31
2. 特殊功能寄存器T2CON T2的功能选择由特殊功能控制寄存器T2CON来设定,
(2)M1、M0——工作方式选择位 M1、M0共有4种编码,对应于4种工作方式的选择,如
表6-1所示。
10
(3)C/T*—计数器模式和定时器模式选择位 0:为定时器工作模式,对单片机的晶体振荡器12分频后的
c51单片机的定时器和中断
二、方式1 方式
方式1结构 图6-5 T0 (或T1) 方式 结构 或
三、方式2 方式
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TL1 重装初值控制 TH1 8位 &
≥1
0 1
M0 M1 C/T
D4
1
1 0
机器周期
GATE D7
1 INT1引脚
D0
方式2结构 图6-6 T0 (或T1) 方式 结构 或
图6-3 方波硬件设计和仿真波形
(2)源程序 ) //中断方式 中断方式 #include "reg51.h" #include "stdio.h" Uart_Init(); sbit P1_1=P1^1; void main() { TMOD=0X01; // T0工作在方式 工作在方式1 工作在方式 TL0=0xB0; //给TL0置初值 给 置初值 TH0=0x3c; //给TH0置初值 给 置初值 ET0=1; //开串行口中断 开串行口中断 EA=1; TF0=0; TR0=1; //启动 启动T0 启动 while(1) ; //设置断点处 设置断点处 } void Int_T0() interrupt 1 using 2 { TL0=0xB0; TH0=0x3c; //重赋初值 重赋初值 P1_1=!P1_1; //定时时间到 定时时间到P1_1取反 定时时间到 取反 printf("Timer1 overflow in Mode 1\n");/* 定时 溢出后, 器0溢出后,输出提示信息 */ 溢出后 }
计数器控制寄存器TCON 三、定时/计数器控制寄存器 定时 计数器控制寄存器
定时器控制字TCON的格式如下。 位地址 位符号 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
定时中断程序
1、方式1应用(输出如图所示方波,时钟频率为6MHz)中断程序方式:ORG 0000HAJMP MAIN ;转主程序ORG 000BH ;T0的中断入口AJMP IT0P ;转T0中断处理程序IT0PORG 0100HMAIN: MOV SP,#60H ;设堆栈指针MOV TMOD,#01H ;设置T0为方式1MOV TL0,#0CH ;T0置初值,如何计算初值MOV TH0,#0FEHSETB TR0 ;启动T0SETB ET0 ;允许T0中断SETB EA ;CPU开中断RETHERE: AJMP HERE ;自身跳转ITOP: MOV TL0,#0CH ;T0中断服务子程序,T0置初值MOV TH0,#0FEHCPL P1.0 ;P1.0的状态取反RETI查询程序方式:ORG 0000HAJMP MAIN ;转主程序ORG 0100HMAIN: MOV TMOD,#01H ;设置T0为方式1SETB TR0 ;接通T0LOOP: MOV TH0,#0FEH ;T0置初值MOV TL0,# 0CHLOOP1: JNB TF0,LOOP1 ;查询TF0标志CPL P1.0 ;P1.0的状态求反SJMP LOOP2、方式1应用(1秒定时程序,时钟频率为6MHz)思路:每次定时中断100ms,10次产生1秒ORG 0000HLJMP MAIN ;上电,转主程序入口MAINORG 000BH ;T0的中断入口LJMP IT0P ;转T0中断处理程序IT0PORG 1000HMAIN: MOV SP,#60H ;设堆栈指针MOV B,#0AH ;设循环次数10次MOV TMOD,#01H ;设T0工作在方式1MOV TL0,#0B0H ;给T0设初值,如何计算初值MOV TH0,#3CHSETB TR0 ;启动T0SETB ET0 ;允许T0中断SETB EA ;CPU开放中断HERE:SJMP HERE ;等待中断ITOP:MOV TL0,#0B0H ;T0中断子程序,重装初值MOV TH0,#3CH ;DJNZ B,LOOPCLR TR0 ;1s定时时间到,停止T0工作LOOP: RETI3、T1的方式2对外部信号计数,要求每计满100个数,将P1.0取反。
实验要求通过电位器提供模拟量的输...
单片机实验实验一顺序结构程序实验二数据区传送子程序实验三简单I/O口控制实验实验四信号灯控制实验五脉冲计数实验实验六并口扩展芯片8255控制交通灯实验七点阵LED显示实验实验八AD转换实验实验九电脑时钟(定时器,中断综合实验)实验十步进电机控制实验实验十一LCD液晶显示屏实验实验一顺序结构程序设计一、实验目的掌握汇编语言设计和调试方法。
二、实验内容1.拼字程序:把2000H的内容拆开,高位送2001H低位,低位送2002H 低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
2.拼字程序:把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节。
3. 求和程序:将30H和31H单元中存放的2个一字节BCD码组合成一个2位的BCD 码存入32H单元,31H单元中的数为低4位。
三、实验步骤用连续或单步方式运行程序,检查2000—2002H中内容变化情况。
四、思考如何用断点方式调试本程序。
实验二数据传送程序一)实验目的:1)掌握单片机汇编语言程序设计和调试方法2)掌握单片机内部RAM,外部RAM,ROM中数据操作方法二)实验内容及步骤:1)再将内部RAM50H单元开始的十个数传到40H为始址的内部RAM中2)再将内部RAM 50H单元开始的十个数送到1000H为始址的外部RAM中3)再将ROM的2000H单元开始的十个数传送到以70H为始址的内部RAM中实验三简单I/O口控制实验一、实验目的(1)学习P1口的使用方法;(2)学习延时子程序的编写。
二、实验预备知识(1)P1口对准双向口,每一位都可独立地定义为输出线或输入线。
(2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
三、实验内容P1作为输出口,接八只发光二极管,编写程序,使发光二极管左(右)循环点亮。
《单片机原理及应用》课程设计软件流程图
1.函数波形发生器流程图主程序流程T0中断服务程序流程2. 255秒定时器流程主程序流程图INT0中断服务程序流程T1中断服务程序流程T0中断服务程序流程3. 比例电压变换器流程主程序流程图4. 模拟电压显示器流程主程序流程图注:P1口和P3.0-P3.3接12个LED 灯,其中P3.3接最高位灯L12,P1.0接最低位灯L0。
5. 脉冲计数器流程主程序流程图T1中断服务程序流程图T0中断服务程序流程图6. 水塔水位控制器流程主程序流程图T0中断服务程序流程图T1中断服务程序流程图7. 占空比可调的方波发生器流程主程序流程图T0中断服务程序流程图注:T0的中断服务程序编制过程中必须注意使程序所有流程的执行时间小于100μS 。
否则,输出波形的频率不符合题目的要求8. 双机通过串行接口互传数据流程主程序流程图T0中断服务程序流程图串口中断服务程序流程图9. 花样流水灯流程主程序流程图T0中断服务程序流程图注:在主程序中由于仅使用了8bit运算,故实际A/D采样值为255时,得到的延时时间间隔为1280mS。
若要完全符合题意,则需要使用16bit的算术运算才能满足要求。
10. 模拟电压比较器流程主程序流程图T0中断服务程序流程图T1中断服务程序流程图11. 利用PWM 信号实现直流小电机的调速流程主程序流程图注:在程序的编制过程中,必须仔细调整延时37微秒的延时子程序的延时时间,使输出波形的频率满足题目要求。
12. 调频信号发生器流程主程序流程图T0中断服务程序流程图注:该程序编制过程中须注意,T0中断服务程序与主程序均使用0区的工作寄存器。
另外,T0的中断服务程序中最长流程的执行时间必须小于50微秒13. 频率计主程序流程图T1中断服务程序流程图动态显示子程序流程图主程序流程图14. 电子钟T0中断服务程序流程图INT0中断服务程序流程图动态显示子程序流程图15. 数字电压表主程序流程图T0中断服务程序流程图动态显示子程序流程图16. 数字跑表主程序流程图INT0中断服务程序流程图T0中断服务程序流程图动态显示子程序流程图17. 步进电机驱动器主程序流程图INT0中断服务程序流程T0中断服务程序流程。
定时器
• 单片机复位时,两个寄存器的所有位都被清0。
25
方式2的应用实例
方式2省去程序中重装初值的指令,并可产生相当精确的定时。
例:当T0(P3.4)引脚上发生负跳变时,从P1.0引脚 上输出一个周期为1ms的方波,如图所示。(系统时 钟为6MHz)
方式2的应用实例
(1)工作方式选择
T0为方式1计数,初值 0FFFFH,即外部计数 输入端T0(P3.4)发生一次负跳变时,T0 加1且溢出,溢出标志TF0置“1”,发中断 请求。在进入T0中断程序后,把F0标志置 “1”,说明T0脚已接收了负跳变信号。
设定时器工作在方式1,则M=16 X=2M-T/t =216-20 ×103=45536=B1E0H
则:TH0=0B1H,TL0=0E0H
ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT
MAIN: MOV SP,#60H MOV TMOD,#01H MOV TH0,#0B1H MOV TL0,#0E0H MOV IE,#10000010B SETB TR0
•
以上例题采用查询的方法,这种方法很简单,
但是在定时器整个计数的过程中,CPU要不断
地查询溢出标志TFx的状态,很难执行其他操
作,占用了CPU的工作时间,使得CPU的工作
效率不高,在复杂系统中不可取。
•
采用中断的方式来实现,可大大提高CPU的工
作效率,学习重点。
39
运行中读定时器/计数器
在读取运行中的定时器/计数器时,需注意: 若恰好出 现TLX溢出向THX进位的情况,则读得的(TLX) 值就 完全不对。同样,先读(THX) 再读(TLX) 也可能出错。
T1定义为方式2定时。在T0脚发生一次负跳变 后,启动T1每500s产生一次中断,在中断 服务程序中对P1.0求反,使P1.0产生周期 1ms的方波。
单片机中断系统结构
/INT1中断 /INT0中断
优先级控优制先位级控定制时位器T1优中先断级控制位 优先级控制位
优先级控制位 定时器T0中断
优先级控制位
高级中断(同为1时 亦称其为同级中断)
低级中断(同为0时 亦称其为同级中断)
如果同样优先级的请求同时接收到,则内部对中 断源的查询次序决定先接受哪一个请求,表5.5列出了同 (一优先)级中断源的内部查询顺序。
单片机实验报告(相当不错,有具体实验结果分析哦)
学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:实验一 I/O 口输入、输出实验地点:基础实验大楼A311一、实验目的掌握单片机P1口、P3口的使用方法。
二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区)。
2学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:五、实验步骤1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
六、实验参考程序本实验参考程序:;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);;用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
[单片机课设]秒表时钟计时器的设计
单片机原理课程设计——秒表时钟计时器的设计专业:电气工程及其自动化方向:电力系统*****学号:************指导老师:***目录第1章方案论证 (3)第2章硬件设计 (5)2.1秒表/时钟计时器的总体设计 (5)2.2 AT89C52单片机最小系统 (6)2.3 74LS244芯片说明 (8)2.4 LED显示器的显示方法及其与单片机的接口 (8)2.5电源电路的设计 (10)第3章软件设计 (11)3.1主程序 (11)3.2显示子程序 (11)3.3定时器T0中断服务程序 (12)3.4 T1中断服务程序 (12)3.5调时功能程序 (13)3.6整点响程序 (13)3.7时钟/秒表功能程序 (13)3.8 程序清单 (13)第4章设计总结 (23)第1章方案论证现今的计时器通常只能通过启/停按键实现断点计时的功能,即通过启/停按键来记录一段时间。
这种计时器查看的时间只能为计时结束时刻。
实际的应用中往往需要在不影响正常计时的基础上,能查看记录过程中的某些点的时间。
本课设即针对此问题,设计了一种能通过按键方式查看记录过程中任一时刻值的计时器。
这种计时器在查看中间值时不会影响整个记录过程,并且能把相应数据送入存储模块及显示模块,以便查看。
本系统采用AT89C52单片机作控制器,LED数码管,实现显示时、分、秒,以24小时计时方式。
为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。
由于静态显示法需要数据锁存器等硬件,结构较为复杂,考虑时钟显示只有六位,且系统没有其他复杂的处理任务,所以采用动态扫描法实现LED的显示。
单片机采用AT89C52系列,有足够的空余硬件资源实现其它的扩充功能。
秒表/时钟计时器的总体设计框图如下图所示。
图1.1 系统总体设计框图系统主要实现如下功能:1.时钟功能对于时钟功能,需要在数码管上显示小时、分钟和秒钟,因此,可以在内部存储空间分别定义它们的显示缓存空间,来存放小时、分钟和秒钟的BCD码,各2个字节。
微机原理与单片机接口技术(第2版)李精华 第6章微处理器中断及定时计数器应用设计
断的查询顺序是“外部中断0→定时/计数器T0→外部中断1→定时/计数器T1→串行口中断”。 (5)若程序正在执行读/写IE和IP指令,则CPU执行该指令结束后,需要再执行一条其他指令才可
处理中断源的程序称为中断处理程序。 CPU执行有关的中断处理程序称为中断处理 。而返回断点的过程称为中断返回,中断响应 和处理过程如图6-1所示。
图6-1 中断响应和处理过程
4
2.中断的处理过程
①接收中断请求。 ②查看本级中断屏蔽位,若该位为1,则本级中断源参与优先级排队。 ③中断优先级选择。 ④处理机执行完一条指令后或者这条指令已无法执行完,则立即中止现 行程序。接着,中断部件根据中断级去指定相应的主存单元,并把被中 断的指令地址和处理机当前的主要状态信息存放在此单元中。 ⑤中断部件根据中断级又指定另外的主存单元,从这些单元中取出处理 机新的状态信息和该级中断控制程序的起始地址。 ⑥执行中断控制程序和相应的中断服务程序。 ⑦执行完中断服务程序后,利用专用指令使处理机返回被中断的程序或 转向其他程序。
7.中断屏蔽
对各中断级设置相应的屏蔽位。只有屏蔽位为1时,该中断级才能参加 中断优先级排队。中断屏蔽位可由专用指令建立,因而可以灵活地调整中断 优先级。有些机器针对某些中断源也设置屏蔽位,只有当屏蔽位为1时,相 应的中断源才起作用。。
6.2 单片机中断系统概述
51系列不同型号单片机的中断源的数量是不同的(5~11个) ,本节以8051单片机的中断系统为例分析51系列单片机的中断系 统,其它各种51单片机的中断系统与之基本相同,8051单片机的 中断系统结构框图如图6-2所示。8051单片机有5个中断源,2个中 断优先级,可以实现二级中断服务程序嵌套,每个中断源可以编 程为高优先级或低优先级中断,允许或禁止向CPU请求中断。与中 断系统有关的特殊功能寄存器有中断允许控制寄存器IE、中断优 先级控制寄存器IP和中断源寄存器TCON、SCON。
单片机汇编中断程序(定时器中断)
单片机汇编中断程序(定时器中断)
;首相,介绍一下51 单片机的定时计数器,51 有两个定时计数器,分别为
T0,T1,基本一样,
;有一点不同,下面我们介绍定时计数器T0
;了解8051 的timer0 中断的程序写法,用中断法产生定时
;上面显示的是proteus 仿真图,下面的是源程序
;说明:(源程序中的终端入口地址很重要(这个是固定的),程序中断时,
会在对应中断固定的
;入口地址进入,因为规定的相隔入口间的空进有限,只能用跳转指令跳转,最终用RETI 强制返回
;这个程序把所有的中断入口地址都写上了,没有用到的,用RETI 直接屏蔽)
;运行结果是使led 灯明一下,暗一下。
COUNT EQU9217;对于11.0592 的晶振来说,延时10ms
LEDEQUP1.1
ORG0000H
LJMP RESET;开始时跳转转到初始化程序中
ORG0003H;外部中断0
RETI
ORG000BH;定时器/计数器T0 入口地址
LJMP INT_TIMER0;跳转到定时器/计数器中断服务程序中去
ORG0013H;外部中断1。
单片机(c语言版)定时器计数器复习进程
12
6.3 对外部输入的计数信号的要求
当定时器/计数器工作在计数器模式时,计数脉冲来自外部输入 引脚T0或T1。当输入信号产生由1至0的跳变(即负跳变)时, 计数器值增1。 由于确认一次负跳变花2个机器周期,即24个振荡周期,因此 外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
TMOD寄存器应初始化为0x01=0000 0001B
(2)计算T0计数初值 设定时时间5ms(即5000µs),设定时器T0的计数初值为
X,假设晶振的频率为11.0592MHz,则定时时间为: 定时时间=(216−X)12/晶振频率 则 5000=(216 −X)12/11.0592 得:X = 60928,转换成16进制后为:0xee00,其中0xee装 入TH0,0x00装入TL0。 (3)设置IE寄存器
TCON
TF1 D7
申请 中断
TR1
TF0
溢出 TH0 TL0
TR0
8位 5位
D0
1 1
0 &
≥1
T0引脚
机器周期 1
INT0引脚
TMOD
0 M0 D0 0 M1
C/T GATE
M0 M1 C/T GATE D7
6
C/T*位决定定时器/计数器的两种工作模式 (1)C/T*=0,T1(或T0)为定时器工作模式,把时钟振荡
图6-2 寄存器TMOD格式 3
(2)M1、M0—工作方式选择位 M1、M0的4种编码,对应于4种工作方式的选择。 (3)C/T* —计数器模式和定时器模式选择位 C/T*=0,为定时器工作模式,对单片机的晶体振荡器12分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件程序:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP PIT0
ORG 001BH
LJMP PIT1
ORG 0100H
MAIN: MOV SP,#FH ;设堆栈指针
MOV SCON,#00H ;设置串行口为方式0
MOV TMOD,#11H ;T0和T1初始化为方式1
MOV TH0, #3CH ;置时间常数,T0和T1定时100ms MOV TL0, #OB0H
MOV TH1, #3CH
MOV TL1, #0B0H
MOV 50H, #96H ;T0中断次数计数单元
MOV 51H,#14H ;T1中断次数计数单元
MOV R1, #00H
MOV R2, #00H
MOV R0, #40H ;显示缓冲单元起始地址
DISP0:MOV @R0, #00H ;显示缓冲单元清零
INC R0
CJNE R0, #4CH,DISP0
MOV 44H,#01H ;设置通道号的显示缓冲单元
MOV 48H,#02H
MOV R7,#40H ;置当前通道显示缓冲单元首址
MOV 53H,#40H
SETB ETO ;开中断
SETB ET1
SETB EA
SETB TR0 ;启动定时器
SETB TR1
LP: MOV R7, 53H ;调显示子程序
ACALL DISP
AJMP JP
定时器TO中断服务程序
PIT0: MOV TH0, #3CH ;重置时间常数
MOV TL0, #OBOH
DJNZ 50H,#96H
PUSH ACC
PUSH 03H
ACALL WDXJ ;调温度巡检子程序
POP 03H
POP ACC
DH0: RET1
定时器T1中断服务程序
PIT1: MOV TH1,#3CH ;重置时间常数
MOV TL0, #OBOH
DJNZ 51H,DH1 ;计数20次即定时2S
MOV 51H,#14H
INC R2
CJNE R2,#03H,CNL0 ;根据R2中的内容确定显示缓冲区首址 MOV R2,#00H
CNL0: CJNE R2,#00H,CNL1
MOV 53H,#40H
SJMP DH1
CNL1: CJNE R2,#01H,CNL2
MOV 53H,#40H
SJMP DH1
CNL2: MOV 53H,#48H
DH1: RETI
显示子程序
DISP: CLR P3.7 ;输出锁存
MOV R3,#01H ;置显示字位码
MOV DPTR,#TAB
DISP1:MOV A,R3
MOV SBUF,A ;字位码送串行口
JNB T1,$ ;等待串行转送结束
CLR T1 ;清串行中断标志
MOV A,R7
MOV R0,A
MOV A,@RO ;取代显示的数据
MOVC A,@R0 ;查表求字段码
MOV SBUF, A ;字段码送串行口,
JNB T1,$ ;等待串行中断标志
SETB P3.7 ;允许输出显示
ACALL DEL ;调延时子程序
MOV A,R3
JB ACC.3,DISP2 ;4位显示完否
RL A
MOV R3,A
INC R7
CLR P3.7 ;输出锁存
AJNP DISP1
DISP2:RET
TAB : DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
DEL: PUSH 07H ;延时子程序
MOV R6,#32H
AA: MOV R7,#19H
DJNZ R7,$
DJNZ R6,AA
POP 06H
POP 07H
RET
温度巡检子程序
WDXJ: CLR P2.0
CLR P2.1
SERB P2.2
MOV A,R1 ;读入当前待检测的通道号
RL A
RL A
ADD A,#40H ;求显示缓冲区首址
MOV R0,A
MOV A,R1
MOV @R0,A
INC R0
MOV R5,#00H
MOV R6,#04H
STAT: CJNE R1,#00H,AD01 ;根据R1的内容选择通道
CLR P2.5
CLR P2.6
CLR P2.7
SJMP ZH
AD01: CJNE R1,#01H,AD02
SETB P2.5
CLR P2.6
CLR P2.7
SJMP ZH
AD02: CLR P2.5
SETB P2.6
CLR P2.7
ZH: SETB P2.0
NOP
N0P
NOP
CLP P2.0
JNB P2.2,$ ;检测EOC信号,等待转换完毕 SETB P2.1
MOV P1,#0FFH
MOV A,P1 ;读入转换结果
RRC A ;转换结果除以4
ADD A,R5 ;累加
MOV R5,A
DJNZ R6,ZH ;4次到?
MOV A,R5 ;保存平均值
MOV B,#03H ;标度变换
DIV AB
MOV R3,B
MOV B,#0AH ;将标度变换结果的整数部分 DIV AB ;进行BCD码转换
MOV @R0,A 送显示缓冲单元(十,个位)
INC R0
MOV @R0,B
INC R0
CJNE R3,#00H,L1 ;标度变换结果的余数部分 MOV @RO,#00H ;小数处理
SJMP L3
L1: CJNE R3,#01H,L2。