单片机课程设计报告-电信081-裴颖-08808019(5)

2019-02-21 00:10

0x92,0x82,0xF8,0x80,0x90,}; } //初始化程序

void delay_ms(unsigned int ms) //1ms延时 {

unchar a; while(ms--)

for(a=123;a>0;a--); }

void t0intinit( ) //定时器T0初始化 {

TMOD=0x01;

TH0=0x3c;//50ms定时 TL0=0xb0; EA=1; ET0=1; }

void Timer0Interrupt(void) interrupt 1 //定时器T0中断 方式1 {

uchar time; TH0=0x3c; TL0=0xb0; time++;

if(time==50) //2X50ms=1s {

time=0; ge++; }

}

主程序为: void main() {

t0intinit( ); while(1) {

display( ); while(!KS) { display( ); if(KS) TR0=1; }

while(!KP) {

display(); if(KP) TR0=0; }

while(!KC) {

display( ); if(KC) TR0=0; shi=0; ge=0; }

if(ge==10) {

ge=0;

shi++; }

if(shi==10) {

shi=0; } } }

显示子程序为: void display( ) {

P20=1; P0=tab[ge]; delay_ms(1); P20=0; P21=1; P0=tab[shi]; delay_ms(1); P21=0; } 3.4主程序设计

本系统程序主要模块由主程序、定时中断服务程序、外部中断0服务程序和外部中断1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。协调各个子程序之间的联系。

系统(上电)复位后,进入主程序,主程序流程图如图2.1。首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。数码管显示程序对显示缓存区内的数值进行调用并在数码管上进行动态显示。显示一次就对P1.1和P2.5进行一次扫描,查询复位键P1.1是否按下,当复位键按下后,程序返回开始,重新对系统进行初始化。当没有按下复位键时,程序则扫描P2.5是否按下,当P2.5没有按下则返回显示程,不断地调用显示缓存区的数据进行显示。使用户能清楚的看到当前电子秒表所记录的时间。当查询到P2.5按下后则跳转到另外一段显示程序并调用最红缓存区的数据进行显示,此时显示的

时间即为上一次计时的时间。与此同时,在P2.5按下后单片机执行显示程序的同时也在对P2.5进行扫描,当P2.5断开后立即跳转回之前的显示程序显示当前的计时时间。

在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断服务程序。并在执行完后返回主程序。

开始赋初始值数码管显示复位键P1.1是否按下否否查看键P2.5是否按下是是查看键P2.5是否抬起否调用最终缓存区数据进行显示图2.1 主程序流程图

2.4 中断程序设计

现在方案中采用了三个中断,外部中断INT0,INT1和定时中断T0。CPU在响应中断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序处理。例如当CPU正在处理一个中断申请时,有出现了另一个优先级比它高的中断请求,这是,CPU就暂停终止对当前优先级较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而当CPU为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行程序编辑时要注意对中断的使用,避免出现中断的嵌套。,合理分配中断对本设计的实现是至关重要的。

另外由于数字式电子秒表的最小精度位1ms,属于高精度电子秒表。定时器T0的定时周期也为1ms,为了使电子秒表暂停键按下后CPU能马上去响应中断程序,必须将暂停的外部中断级别高于定时计数器的中断级别。避免出现CPU执行完定时溢出中断程序后再响应外部中断程序,影响计时精度。

AT89C52的自然优先级顺序排列如下:

中断源 最高 外部中断0

定时/计数器0溢出中断 外部中断1

定时/计数器1溢出中断

串行口中断 最低

数字式秒表中的两个按键采用了中断实现功能。开始采用外部中断INT0,暂停采用外部中断INT1。另外程序中还用到了定时/计数器0溢出中断进行计时。依据设计要求,暂停的外部中断INT1中断级别最高,计时的定时/计数器0溢出中断次之,开始的外部中断INT0级别最低。

(1)外部中断0服务程序:

外部中断0服务程序结合外部P3.2停止键实现数字电子秒表的停止功能,具体流程图如图2.2。 当按下P3.2停止键按下向CPU发出外部中断请求,CPU转向外部中断0服务程序执行,停止定时器。另外将当前显示的时间进行一次存储,存进中间寄存区。最后中断返回。


单片机课程设计报告-电信081-裴颖-08808019(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011届高考化学精品练习:1-1-1化学实验的安全常识实验基本操作

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: