单片机实验“定时/计数器及中断”的一些问题

这是一个单片机的实验报告的一些问题,实验当初耽搁了没有做,只能补实验报告。实验没做这些问题又不会解答,求大神帮助。能回答多少就回答多少。谢谢。

1. 使用 Keil C 集成开发环境,创建如下工程和 C 语言源程序文件,在仿真运行
状态下观察相关寄存器的变化。

1) 试解释主程序每一行的作用和整体实现的功能;
2) 函数 void Timer0_Int(void)是一个什么函数,试解释每一行的作用和整体
实现的功能;
在程序编译无误的情况下,点击软件仿真按钮,进入仿真状态,点击主菜单的
Peripherals,选择TimerTimer0,然后选择 Interrupt,激活上图右上角的 2
个窗口,观察相关寄存器数值的变化,重点 TH0/TL0 以及 TR0、EA、ET0 等
3) 在 Memory 窗口中观察 0x90 单元有什么变化,为什么?
4) 点击主菜单的 PeripheralsI/O_PortPort1,观察对应位(引脚)的状态变
化,为什么?
5) 假设单片机系统晶振频率为 12MHz,试分析上述程序实现的目标。
6) 分析函数 void Timer0_Int(void)是如何工作的。
附源程序:
#include "AT89X52.h"
void main()
{
TMOD = 0x01;
TH0 = (65536-1000)/256;
TL0 = (65536-1000)%256;
ET0 = 1;
EA = 1;
TR0 = 1;
while(1);
}
void Timer0_Int(void) interrupt 1
{
TH0 = (65536-1000)/256;
TL0 = (65536-1000)%256;
P1_0 = ~P1_0;
}
2. 假设系统的晶振时钟为 12MHz,要求在 P1.1 口输出周期为 100ms 占空比 50%
的方波,使用 T1 定时计数器结合中断实现。
1) 分析实现方法,T1 工作在哪种模式?
2) 计算定时器初值;
3) 编写相应的初始化程序和中断服务程序,并仿真调试

第1个回答  推荐于2016-11-10
1.1)主程序各行作用如下:
第一行:设置定时器模式
第二行:设置定时器高位寄存器初值
第三行:设置定时器低位寄存器初值

第四行:T0定时器中断使能
第五行:总中断使能

第六行:打开T0定时器

第七行:死循环(主程序停留在此行)
主程序整体实现的功能:初始化定时器T0
1.2)void Timer0_Int(void)是定时器0中断函数,每行作用如下:
第一行:重新设定定时器高位寄存器初值
第二行:重新设置定时器低位寄存器初值
第三行:如果P1_0 IO口是高电平则改为低电平,如是低电平改为高电平

整体实现的功能:P1_0 IO口高低电平1秒切换一次

妈呀,这么多问题,网上找找,应该有的本回答被提问者和网友采纳
相似回答