定时器实验报告
㈠ 实验目的
1. 掌握单片机内部计数器的使用和编程方法; 2. 掌握中断处理程序的编程方法。
㈡ 实验器材
1. 2. 3. 4. 5.
G6W仿真器 一台 MCS—51实验板 一台 PC机 一台 电源 一台 示波器 一台
㈢ 实验内容及要求
1.在使用12MHz晶振的条件下,由8051内部定时器1按方式1工作,即作为16位定时器使用,每0.05秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。(用连线连接J2、J3)。
要求:编写程序模拟一循环彩灯。彩灯变化花样为:①L1、L2、…L8依次点亮;②L1、L2、…L8依次熄灭;③L1、L2、…L8全亮、全灭。各时序间隔为0.5秒。让发光二极管按以上规律循环显示下去。 2.编写一个救护车警笛声程序,要求:高低两种音调交替出现,交替周期1~1.5S。
㈣ 实验框图 开 始 置T1的工作方式 置初始常数
开中断 等 待
主程序框图
循环彩灯代码
ORG 0000H LJMP MAIN
INT_T1入口 保护现场 置定时常数 是否到N 0.5秒 Y 查 表 显示 调整表格指针 恢复现场 中断返回 INT_T1中断程序框图 ORG 000BH ;T0的中断入口地址
MAIN:
MOV SP,#60H
MOV TMOD,#01H ;设置T1工作于方式一 MOV 20H,#0AH ;装入中断次数 MOV TL0,#0B0H ;装入计数值低8位 MOV TH0,#3CH ;装入计数值高8位 SETB TR1 ;启动定时器T1 SETB ET1 SETB EA SJMP $
CAIDENG: PUSH PSW
PUSH ACC MOV TL0,#0B0H MOV TH0,#3CH JUDGE:
DJNZ 20H,RETUNT MOV 20H,#0AH
HUAYANG1: MOV R0,#08H MOV P1,#00H MOV A,#01H LOOP:MOV P1,A
LCALL DELAY LCALL DELAY LCALL DELAY RL A
DJNZ R0,LOOP
NEXT1:
MOV TL0,#0B0H MOV TH0,#3CH JUDGE1:
DJNZ 20H,NEXT1 MOV 20H,0AH
;允许T1中断 ;允许CPU中断 ;等待中断 ;保护现场
;装入计数值低8位 ;装入计数值高8位 ;0.5秒未到,返回 ;重置中断次数 ;花样一
;设置花样一循环次数;装入计数值低8位 ;装入计数值高8位 ;0.5秒未到,返回
HUAYANG2: ;花样二
MOV R0,#08H ;设置花样二循环次数 MOV P1,#0FFH MOV A,#0FEH LOOP1:MOV P1,A LCALL DELAY LCALL DELAY LCALL DELAY
RL A
DJNZ R0,LOOP1
NEXT2:
MOV TL0,#0B0H MOV TH0,#3CH JUDGE2:
DJNZ 20H,NEXT2 MOV 20H,0AH
HUAYANG3: MOV P1,#00H
LCALL DELAY LCALL DELAY LCALL DELAY
MOV P1,#0FFH LCALL DELAY LCALL DELAY LCALL DELAY NEXT3:
MOV TL0,#0B0H MOV TH0,#3CH JUDGE3:
DJNZ 20H,NEXT3 MOV 20H,0AH JMP RETUNT
DELAY: MOV R2,#0FFH DELAY1:
MOV R1,#0FFH
;装入计数值低8位 ;装入计数值高8位 ;0.5秒未到,返回 ;装入计数值低8位 ;装入计数值高8位 ;0.5秒未到,返回 ;延时子程序 DJNZ R1,$
DJNZ R2,DELAY1 RET
RETUNT: POP ACC POP PSW
RETI ;中断返回 END
救护车警笛声程序
ORG 0000H
AJMP MAIN
ORG 001BH AJMP S1 ORG 0040H MAIN:
MOV SP,#70H MOV R1,#100 MOV R2,#10 MOV R3,#20
MOV TMOD,#10H MOV TH1,#0FCH MOV TL1,#18H SETB TR1 SETB ET1 SETB EA SJMP $ S1:
JB F0,S2 MOV TH1,#0FCH MOV TL1,#18H
CPL P1.0 DJNZ R1,ENDS MOV R1,#100 DJNZ R2,ENDS MOV R2,#10
SETB F0 SJMP ENDS
;T0的中断入口地址 ;设置T1为定时器,工作方式1 ;装入计数值高8位 ;装入计数值低8位
;启动定时器T1 ;允许T1中断 ;允许CPU中断 ;等待中断 ;高音部分 ;取反 ;F0赋值 S2:
MOV TH1,#0FEH ;低音部分 MOV TL1,#0CH CPL P1.0
DJNZ R1,ENDS MOV R1,#100 DJNZ R3,ENDS MOV R3,#20 CLR F0 ENDS:
RETI
本次实验主要考察定时器和计数器还有中断的使用,由于课本上例题详细,所以初始化赋值之类的基础性问题并没有遇到什么困难,再加上第一次实验P1口输出和音乐实验的铺垫,基本上没有遇到什么太大的问题。