单片机定时器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时器实验报告
㈠实验目的
1.掌握单片机内部计数器的使用和编程方法;
2.掌握中断处理程序的编程方法。
㈡实验器材
1.G6W仿真器一台
2.MCS—51实验板一台
3.PC机一台
4.电源一台
5.示波器一台
㈢实验内容及要求
1.在使用12MHz晶振的条件下,由8051内部定时器1按方式1工作,即作为16位定时器使用,每0.05秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。(用连线连接J2、J3)。
要求:编写程序模拟一循环彩灯。彩灯变化花样为:①L1、L2、 (8)
次点亮;②L1、L2、…L8依次熄灭;③L1、L2、…L8全亮、全灭。各时序间隔为0.5秒。让发光二极管按以上规律循环显示下去。
2.编写一个救护车警笛声程序,要求:高低两种音调交替出现,交替周期1~
1.5S。
㈣ 实验框图
循环彩灯代码
ORG 0000H LJMP MAIN
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 ;允许T1中断
SETB EA ;允许CPU中断
SJMP $ ;等待中断
CAIDENG:
PUSH PSW
PUSH ACC ;保护现场
MOV TL0,#0B0H ;装入计数值低8位
MOV TH0,#3CH ;装入计数值高8位JUDGE:
DJNZ 20H,RETUNT ;0.5秒未到,返回MOV 20H,#0AH ;重置中断次数
HUAY ANG1: ;花样一
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 ;装入计数值低8位
MOV TH0,#3CH ;装入计数值高8位JUDGE1:
DJNZ 20H,NEXT1 ;0.5秒未到,返回MOV 20H,0AH
HUAY ANG2: ;花样二
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 ;装入计数值低8位
MOV TH0,#3CH ;装入计数值高8位JUDGE2:
DJNZ 20H,NEXT2 ;0.5秒未到,返回MOV 20H,0AH
HUAY ANG3:
MOV P1,#00H
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV P1,#0FFH
LCALL DELAY
LCALL DELAY
LCALL DELAY
NEXT3:
MOV TL0,#0B0H ;装入计数值低8位
MOV TH0,#3CH ;装入计数值高8位JUDGE3:
DJNZ 20H,NEXT3 ;0.5秒未到,返回MOV 20H,0AH
JMP RETUNT
DELAY: ;延时子程序MOV R2,#0FFH
DELAY1:
MOV R1,#0FFH
DJNZ R1,$
DJNZ R2,DELAY1
RET
RETUNT:
POP ACC
POP PSW
RETI ;中断返回
END
救护车警笛声程序
ORG 0000H
AJMP MAIN
ORG 001BH ;T0的中断入口地址
AJMP S1
ORG 0040H
MAIN:
MOV SP,#70H
MOV R1,#100
MOV R2,#10
MOV R3,#20
MOV TMOD,#10H ;设置T1为定时器,工作方式1
MOV TH1,#0FCH ;装入计数值高8位
MOV TL1,#18H ;装入计数值低8位
SETB TR1 ;启动定时器T1
SETB ET1 ;允许T1中断
SETB EA ;允许CPU中断
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 ;F0赋值
SJMP ENDS
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口输出和音乐实验的铺垫,基本上没有遇到什么太大的问题。