深 圳 大 学 实 验 报 告
课程名称: 微型计算机原理
实验项目名称:实验 9. 定时器的使用-PWM 产生、按键
学院:医学院
专业: 生物医学工程
指导教师:尹力
报告人:蔡笑玲 学号:2009222007 班级: 1
实验时间: 2011-5-19
实验报告提交时间: 2011-5-25
教务处制
实验目的与要求:
1、定时器是单片机中最重要的功能之一,了解溢出式传统定时器的使用方法。
2、了解如何用定时器来实现按键的去抖动功能。
方法、步骤:
实验过程及内容:
(1):用汇编语言编写程序,使用定时器中断,实现从 P0.0 输出频率为 1KHz 的方
波。
(2):修改程序,使 P0.0 输出 PWM 波,令其占空比为 1:4,也就是 250us 的高电
平输出,750us 的低电平输出。
用示波器观察(1)、(2)输出的波形,看看输出的波形是否与自己程序设定的
一致。
(3):用 C 语言重写(1)(2)的程序,观察汇编和 C 两个程序运行效果是否一样。
(4)调整程序中占空比输出,用示波器观察输出的变化
(5)也可以将输出引脚接到 LED 上,观察占空比变化时,LED 亮度的变化。
数据处理分析:
实验 9.1:
ORG 0000H
LJMP MAIN
ORG 000BH
JMP T0_INT
ORG 30H
MAIN: MOV TMOD ,#01H
MOV TH0,#0FEH
MOV TL0,#33H
SETB EA
SETB ET0
SETB TR0
SJMP $
T0_INT:
CPL P2.6
MOV TH0,#0FEH
MOV TL0,#33H
RETI
END
实验 9.2:
ORG 0000H
LJMP MAIN
ORG 000BH
JMP T0_INT
ORG 30H
MAIN: MOV TMOD ,#01H
MOV TH0,#0FEH
MOV TL0,#0CH
SETB EA
SETB ET0
SETB P2.6
SETB TR0
T0_INT:
JB P2.6,T0_INT1
CPL P2.6
MOV TH0,#0FEH
MOV TL0,#0CH
JMP EXIT
RETI
T0_INT1:
CPL P2.6
MOV TH0,#0FAH
MOV TL0, #24H
EXIT: RETI
END
9.1C 语言实现:
#include "STC12C5A60S2.h"
#include "Common.h"
void Timer0_Init()
{
TMOD &= (~0x04);
TMOD &= (~0x03);
TMOD |= 0x01;
TH0 = (uint8)(64536>>8);
TL0 = (uint8)64536;
PT0 = 0;
ET0 = 1;
TR0 = 1;
EA=1;
}
void Timer0_ISR() interrupt 1
{
P2=(~P2);
TH0 = (uint8)(64536>>8);
TL0 = (uint8) 64536;
}
//AND
// OR
// TMOD.1 =0 使用 16 位模式,TH0,TL0 全用
// 给定时器赋初值 右移 8 位
// 低优先级
// 使能定时器 0 中断
// 启动定时器 0
// 使能总中断
9.2C 语言实现:
深圳大学学生实验报告用纸
实验结论:
指导教师批阅意见:
成绩评定:
备注:
指导教师签字:
年
月
日
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后 10 日内。