历史上的今天
今天是:2025年06月16日(星期一)
2021年06月16日 | 51单片机定时器实验
2021-06-16 来源:eefocus
一.实验要求
由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮......一直循环下去。
二.实验目的
1.学习8031内部计数器的使用和编程方法。
2. 进一步掌握中断处理程序的编程方法。
三.实验电路及连线

P1.0--P1.7 接 L1--L8
四.实验说明
1.关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验用的是定时器,有关计数器的说明请查阅实验七。
2.内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:
机器周期=12÷11.0592MHz=1.0857μS
(65536-定时常数)*1.0857μS=50mS
定时常数=4C00H
3.定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行
或停止等。
4.在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
五.实验程序
ORG 0000H
AJMP START
ORG 001BH ;T1中断入口地址
AJMP INT_T1
ORG 0100H
START:
MOV SP,#60H
MOV TMOD,#10H ;置T1为方式1
MOV TL1,#00H ;延时50mS的时间常数
MOV TH1,#4BH
MOV R0,#00H
MOV R1,#20
SETB TR1
SETB ET1
SETB EA ;开中断
SJMP $
INT_T1: ;T1中断服务子程序
PUSH ACC ;保护现场
PUSH PSW
PUSH DPL
PUSH DPH
CLR TR1 ;关中断
MOV TL1,#00H ;延时50mS常数
MOV TH1,#4BH
SETB TR1 ;开中断
DJNZ R1,EXIT
MOV R1,#20 ;延时一秒的常数
MOV DPTR,#DATA ;置常数表基址
MOV A,R0 ;置常数表偏移量
MOVC A,@A+DPTR ;读常数表
MOV P1,A ;送P1口显示
INC R0
ANL 00,#07H
EXIT:
POP DPH ;恢复现场
POP DPL
POP PSW
POP ACC
RETI
;LED显示常数表
DATA: DB 0FAH,0F5H,0AFH,05FH,0AAH,55H,00H,0FFH
END
上一篇:C51单片机编程规范总则
下一篇:Keil c51指针变量
史海拾趣
|
#include #include #include #include #include \"Header.h\" extern char msg[60]; extern char worker[21]; extern char address[21]; //====================================================== //主 ...… 查看全部问答> |
|
项目要求用NI公司的LabWindows/CVI开发一个应用软件,在ARM9平台上运行,ARM开发版是SBC-2410X,操作系统为WinCE.想问一下用CVI开发出来的软件能不能在该平台上运行.我知道ARM9有很多家公司生产,CVI开发出来的软件在所有ARM9上都能 ...… 查看全部问答> |
|
模电书上说在负反馈放大电路中,输入信号为零时,因为某种电扰动(如合闸通电),其中含有频率为f0的信号,使得AF的附加相移达到180°或-180°,@负反馈变成了正反馈,如果|AF|>1,则产生了自激振荡。我不明白的是,如果@处条件不成立,也就是不存 ...… 查看全部问答> |
|
把小弟这两天DIY的过程分享一下,顺便晒一晒第二块板子O(∩_∩)O~ 前两天做了个小板子,算是练了练手,承蒙大家夸奖 正好要开始做第二块板子,看到有朋友问了,就把过程也写一下吧,谈不上经验,大家姑且看看;P 首先是打印: 我用的是硫酸纸,按理说阻焊应该是打在菲林上的,但是出去转了一圈没有愿意 ...… 查看全部问答> |
|
[S3C6410学习心得之一]ok6410开发板基于Ubuntu9.10开发环境搭建-串口 系统:Ubuntu9.10开发板:飞凌OK6410 最近购入一块新的开发板,芯片是基于三星的S3C6410,ARM11,使用之后发现,速度果然很不错,跟ARM9的S3C2440不可同日而语。飞凌的开发板质量很不错,跟友善之臂相比,谁比较好一目了 ...… 查看全部问答> |




