基于89C51单片机的秒表课程设计_第1页
基于89C51单片机的秒表课程设计_第2页
基于89C51单片机的秒表课程设计_第3页
基于89C51单片机的秒表课程设计_第4页
基于89C51单片机的秒表课程设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MCS-51系列单片机是8位单片机产品,89C51是其中的典型代表,基本模块包括以下几个部分:(1)CPU:89C51的CPU是8位的,另外89C51内部有1个位处理器;(2)R0M:4KB的片内程序存储器,存放开发调试完成的应用程序;(3)RAM:256B的片内数据存储器,容量小,但作用大;(4)I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线;(5)中断系统:共5个中断源,3个内部中断,2个外部中断;(6)定时器/计数器:2个16位的可编程定时器/计数器;(7)通用串行口:全双工通用异步接收器/发送器;(8)振荡器:89C51的外接晶振与内部时钟振荡器为CPU提供时钟信号;(9)总线控制:89C51对外提供若干控制总线,便于系统扩展。89C51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别为反相振荡放大器的输入及内部时钟工作电路的输入和来自反相振荡器的输出,该反相放大器可以配置为片内振荡器。采用上电复位,上电后,由于电容充电,使RST持续一段时间的高电平,从而实现上电复位操作。采用3个LED数码管,LED是七段显示器,内部有7个条形发光二极管和1个小圆点发光二极管,根据各管的亮暗组成字符。用Proteus软件画出主电路图见附录一。ORG0000H;程序开始AJMPSTART;跳转到主程序STARTORG000BH;定时器0中断的地址入口AJMPTIME0;定时器0溢出,跳转到中断程序TIME0START:;主程序MOVP3,#0FFH;输入端口P3全写1MOVP0,#3FH;MOVP1,#3FH;MOVP2,#0BFH;数码管初始化MOV30H,#00H;MOVR0,#00H;MOVR1,#0AH;MOVR2,#00H;工作寄存器初始化MOVTMOD,#01H;定时器0工作于方式1MOVTH0,#0D8H;MOVTL0,#0FEH;定时器0预置数(D8FEH=55550D)SETBEA;开总中断允许SETBET0;开定时器0中断允许READ:;读键程序L1:JBP3.2,L2;LCALLDELAY;按键延时防抖JBP3.2,L1;AJMPRUN;确认计时键被按下,开始/继续计时L2:JBP3.3,L3;LCALLDELAY;按键延时防抖JBP3.3,L2;AJMPPAUSE;确认暂停键被按下,暂停计时L3:JBP3.4,L1;LCALLDELAY;按键延时防抖JBP3.4,L3;AJMPSTOP;确认清零键被按下,秒表重置RUN:;计时键按下,跳转至此SETBTR0;定时器0开始/继续运行AJMPREAD;PAUSE:;暂停键按下,跳转至此CLRTR0;AJMPREAD;TIME0:;定时器0溢出,中断,跳转至此INC30H;MOVA,30H;CJNEA,#0AH,TIME1;30H单元中的值到10了吗?(计时到10毫秒了吗,也就是说,该向毫秒位送数了吗?)MOVDPTR,#TAB;30H中的值到10了,顺序执行MOVA,R0;INCR0;CJNER0,#0AH,GET;R0中的值到10了吗?(该向秒位进位了吗?)MOVR0,#00H;LCALLSECOND;到了,R0清零,调用进位子程序SECOND,向秒位进位GET:;没到,跳过进位子程序MOVCA,@A+DPTR;MOVP1,A;查表并向数码管毫秒位送数MOV30H,#00H;重置30H单元TIME1:;MOVTH0,#0D8H;MOVTL0,#0FEH;给定时器0重新预置数RETI;中断返回SECOND:;秒位进位子程序PUSHACC;PUSHPSW;将ACC和PSW推入堆栈保护MOVA,R1;INCR1;CJNER1,#14H,GET1;R1中的值到20了吗,也就是说,该向十秒位进位了吗?MOVR1,#0AH;LCALLSECOND1;到了。R1重置,调用进位子程序SECOND1,向十秒位进位GET1:;没到,跳过进位子程序MOVCA,@A+DPTR;MOVP2,A;查表并向数码管秒位送数POPPSW;POPACC;PSW,ACC出栈RET;子程序返回SECOND1:;十秒位进位子程序PUSHACC;PUSHPSW;将ACC和PSW推入堆栈保护MOVA,R2;INCR2;CJNER2,#0AH,GET2;R2中的值到10了吗,也就是说,该将此位归零了吗?MOVR2,#00H;到了,R2清零GET2:;没到,跳过清零程序MOVCA,@A+DPTR;MOVP0,A;查表并向数码管十秒位送数POPPSW;POPACC;PSW,ACC出栈RET;子程序返回STOP:;清零键按下,跳转至此MOVP3,#0FFH;MOVP0,#3FH;MOVP1,#3FH;MOVP2,#0BFH;数码管清零MOV30H,#00H;MOVR0,#00H;MOVR1,#0AH;MOVR2,#00H;工作寄存器初始化CLRTR0;计时器0停止计时MOVTH0,#0D8H;MOVTL0,#0FEH;定时器0预置数AJMPREAD;DELAY:;延时10ms子程序MOVR3,#50D;D1:MOVR4,#100D;D2:DJNZR4,D2;DJNZR3,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论