实验6 定时器实验
———循环彩灯实验
一、实验目的:
1. 学习8031内部计数器的使用和编程方法。 2. 进一步掌握中断处理程序的编写方法。 二、实验设备:
CPU挂箱、8031CPU模块 三、实验原理:
1. 定时常数的确定
定时器/计数器的输入脉冲周期与机器周期一样, 为振荡频率的1/12。本实验中时钟频率为6.0 MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。
时间常数可按下述方法确定:
机器周期=12÷晶振频率=12/(6×10?)=2us
设计数初值为X,则(2e+16-X)×2×10=0.1,可求得X=15535
化为十六进制则X=3CAFH,故初始值为TH1=3CH,TL1=AFH 2. 初始化程序
包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行
正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP便不必设置。
3. 设计中断服务程序和主程序
中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。 四、实验题目
由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。要求编写程序模拟一循环彩灯。彩灯变化花样可自行设计。例程给出的变化花样为:①L1、L2、?L8依次点亮;②L1、L2、?L8依次熄灭;③L1、L2、?L8全亮、全灭。各时序间隔为0.5秒。让发光二极管按以上规律循环显示下去。
-6
单片机实验指导书 第31页
五、实验电路:
六、实验步骤:
P1.0~P1.7分别接发光二极管L1~L8即可。
七、程序框图:T6.ASM
主程序框图 中断程序框图
单片机实验指导书 第32页
七、参考程序:T6.ASM
NAME T6 ;定时器实验
CSEG AT 0000H LJMP START
CSEG AT 001BH ;定时器/计数器1中断程序入口地址 LJMP INT
CSEG AT 4100H
START: MOV A,#01H ;首显示码 CPL A
MOV R1,#03H ;03 MOV R0,#05H ;05 MOV TMOD,#10H ; MOV TL1,#0AFH ; MOV TH1,#03CH
ORL IE,#88H ;CPU ;1 SETB TR1 ;LOOP1: CJNE R0,#00,DISP
MOV R0,#05H ;R0 INC R1 ; CJNE R1,#15H,LOOP2
MOV R1,#03H ;LOOP2: MOV A,R1 ; MOVC A,@A+PC CPL A JMP DISP
DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH DB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H
DISP: MOV P1,A ; JMP LOOP1
INT: CLR TR1 ; DEC R0 ; MOV TL1,#0AFH ; MOV TH1,#03CH
SETB TR1 ; RETI ;END
是偏移量,即从基址寄存器到表首的距离 是计数值 计数器置为方式1 装入时间常数 中断开放标志位和定时器 溢出中断允许位均置位 开始计数 计数计完一个周期,重置初值 表地址偏移量加1 如到表尾,则重置偏移量初值 从表中取显示码入累加器 将取得的显示码从P1口输出显示 停止计数 计数值减一
重置时间常数初值 开始计数 中断返回 单片机实验指导书 第33页
思考题:
修改程序,使彩灯变化花样为:①L1、L2、?L8依次点亮;②L1、L2、?L8依次熄灭;③以双灯方式L1L2、L3L4、?依次点亮;④以双灯方式L8L7、L6L5、?依次熄灭。
单片机实验指导书 第34页
实验7 8255A可编程并行接口实验一
一、实验目的:
1. 了解8255A芯片的结构及编程方法。 2. 掌握通过8255A并行口读取开关数据的方法。 二、实验设备:
CPU挂箱、8031CPU模块 三、实验原理:
设置好8255A各端口的工作模式。实验中应当使三个端口都工作于方式0,并使A口为输出口,B口为输入口。 四、实验内容:
利用8255A可编程并行接口芯片,重复实验四的内容。实验可用B通道作为开关量输入口,A通道作为显示输出口。
五、实验电路:
单片机实验指导书 第35页