单片机的应用.doc_第1页
单片机的应用.doc_第2页
单片机的应用.doc_第3页
单片机的应用.doc_第4页
单片机的应用.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

上机实验作业四:秒表(带译码的LED,定时器)题目:利用Protuse提供的显示电路和按键,设计一个手控计时器(秒表)。要求:1. 使用6个带译码器的LED数码显示器;2. 显示出分、秒、1/100秒; 3. 设置计时/暂停按键S1和归零按键K0;算法分析:按一下S1键,进行计时状态1/暂停状态0的切换。按一下K0键,置成暂停状态0,计时器置0。定义分、秒、1/100秒为MM,SS,NN。MM,SS,NN是二进制数,要经代码转换(二进制BCD)才能进行显示。算法步骤:第1步 初始化。第2步 显示时间。第3步 按下S1键则状态值取反。第4步 按下K0键则状态值置0,计时器置0。第5步 判别(状态值=0)则转到第7步。第6步 进行计时。第7步 转到第2步。进一步细化:第1步1.1 (MM,SS,NN) 0 1.2 状态T0 ( 定义: T EQU 01H ) 1.3 (40H)(42H) (MM,SS,NN)转换为BCD码;二进制BCD显示缓冲区第2步 2.1 显示时间。第3步 3.1 判别S1=1则转到4.1(没有按下) 3.2 状态T取反第4步 4.1判别K0=1则转到5.1(没有按下) 4.2状态T0 4.3 (MM,SS,NN)0第5步5.1 判别(状态T=0)则转到2.1第6步 6.1 延时10ms6.2进行计时。 if NN+100 then NN0; SS+; if SS+60 then SS0; MM+; if MM+60 then MM0 第7步7.1转到1.3 (2.1)流程图: 开始为调试的步骤初始化代码转换显示时间 S1=1 Y NT取反 K0=1 Y NT=0,时间置0Y T=0 N 延时10ms 计 时编程调试步骤:编写主程序1. 编写主程序和显示子程序(范例程序:附在后面。)主程序: ORG 0000H Main: LCALLST; 初始化子程序Main1: LCALLDisLED ; 显示子程序 SJMP Main12. 输入并调试、运行通过。【运行结果:显示出00 00 00】:添加把二进制数转换为BCD码并存到LED显示缓冲区的子程序。 先用EQU定义MM、SS、NN,然后在ST子程序中对其赋值。1. 编写把MM、SS、NN(099)的二进制数转换为BCD码(参见P51页的【例3-51】)并存入显示缓冲区(40H)(42H)中的子程序BIN_BCD。2. 加入到上面调试成功的程序中:MM EQU 30HSSEQU31HNNEQU32H ORG 0000HMain:LCALLST ; MM0, SS0, NN0Main1:LCALLBIN_BCD ; 例:MM=45=00101101B转换为BCD码01000101BLCALLDisLED SJMP Main1BIN_BCD: ; 二进制数转换为BCD码 MOV A,MM MOV B,#10 DIV AB SWAP A ORL A,B MOV 42H,A RET 3. 输入并调试、运行通过。【运行结果:显示出00 00 00】4. 修改ST子程序中的MM#9, SS#45, NN#86后再次运行通过。【运行结果:显示出09 45 86】:添加计时子程序JISHI。1. 编写JISHI子程序:JISHI: INCNNMOVA, #100CJNE A, NN, JSENDMOVNN, #0INCSSMOVA, #60CJNE A, SS, JSENDMOVSS, #0 INC MM MOV A, #60CJNE A, MM, JSENDMOV MM, #0JSEND: RET2 加入到主程序中Main: LCALLST ; Main1: LCALLBIN_BCD ; 二进制数转换为BCD码LCALLDisLED LCALL Delay10 ; 延时10ms LCALLJISHI ; 计时 SJMP Main15. 3. 输入并调试、运行通过。【运行结果:自动计时显示】:添加S1键(计时/暂停键)1. 加入到主程序中TBIT01H ; 定义位变量S1EQUP3.1Main:LCALLST ; 加入T0Main1:LCALLBIN_BCD ; 二进制数转换为BCD码LCALLDisLED JBS1, Main2 CPLT ; 状态T取反JNB S1, $ ; 等待按键松开Main2:JNBT, Main1 ; 当T=0时, 不进行计时。LCALL Delay10 LCALLJISHI ; 计时 SJMP Main12. 输入并调试、运行通过。【运行结果:点击S1键, 停止计时;再点击S1键, 继续计时。】:添加K0键(归零键)1. 加入到主程序中T EQU01HS1EQUP3.1K0 EQUP3.0Main:LCALLST ; Main1:LCALLBIN_BCD ; 二进制数转换为BCD码LCALLDisLED JBS1, Main2 CPLTJNB S1, $ Main2: JB K0, Main3 ; JNB K0, MAIN CLRT MOVMM, #0 MOVNN, #0 MOVSS, #0 JNB K0, $ ; 等待按键松开Main3: JNBT, Main1LCALL Delay10 LCALLJISHI ; 计时 SJMP Main12. 输入并调试、运行通过。【运行结果:任何时候点击K0键, 停止计时并显示出00 00 00。】范例程序: ORG 0000H LJMP Main ORG 50HMain: LCALLST; 调用初始化子程序Main1: LCALLDisLED ; 调用显示子程序 SJMPMain1ST: MOV 40H, #00H ; 0 1/100秒 初始化子程序 MOV 41H, #00H ; 0 秒 MOV 42H, #00H ; 0 分 RETDisLED: MOV A, 42H ; 显示子程序 MOV P2, A MOV A, 41H MOV P1, A MOV A, 40H MOV P0,A RET Delay10: MOV R3, #10 ; 延时10ms子程序 设 f = 6MHzDe1: MOV R4, #250 ;De2: DJNZ R4, De2 ; 250*4us=1ms DJNZ R3, De1 RET END上机实验作业三:题目:外部中断优先控制。要求: 1. 把三个LED显示器的八个阴极端分别接至P0、P1、P2口,段码LED的共极接+5V; 2. 把P3.2和P3.3端口各接一个上拉的按钮K0和K1;3. 编程实现控制:主程序控制LED1从90每隔1秒反复进行倒计数。每当按一下按钮K0,应用外部中断功能控制LED0从90每隔1秒倒计数一次。每当按一下按钮K1,应用外部中断功能控制LED2从90每隔1秒倒计数一次。设Fosc=6MHz。M EQU 30HN EQU 31HT EQU 32H ORG 0000H LJMP MAIN ORG 0003H ; T0的中断入口 LJMP INT0 ORG 0013H ; T1的中断入口 LJMP INT1 ORG 100HMAIN: LCALL STMAIN1: MOV N,#10 ; N=90的倒计数 MOV P1,#0FFH LCALL DELAY MOV DPTR,#TABMAIN2: DEC N MOV A,N MOVC A,A+DPTR MOV P1,A LCALL DELAY MOV A,N CJNE A,#00H,MAIN2 SJMP MAIN1ST: SETB EX0 SETB EX1 ; 设置IE SETB PX1 ; 设置PX1 SETB IT0 ; 设置IT0 SETB IT1 ; 设置IT1 SETB EA ; 开中断 RETINT0: CLR EA PUSH A PUSH PSW PUSH 0AH PUSH 0BH PUSH 0CH ; 保护现场:PSW、A、R2、R3、R4 SETB EA MOV M,#10 DJS0: DEC M MOV DPTR,#TAB MOV A,M MOVC A,A+DPTR MOV P0,A LCALL DELAY MOV A,M CJNE A,#0,DJS0 ; M=90的倒计数 CLR EA POP 0CH POP 0BH POP 0CH POP PSW POP A ; 恢复现场:PSW、A、R2、R3、R4 SETB EA RETIINT1: CLR EA PUSH A PUSH PSW PUSH 12H PUSH 13H PUSH 14H ; 保护现场:PSW、A、R2、R3、R4 SETB EA MOV T,#10DJS1: DEC T MOV DPTR,#TAB MOV A,T MOVC A,A+DPTR MOV P2,A LCALL DELAY MOV A,T CJNE A,#0,DJS1 ; T=90的倒计数 CLR EA POP 14H POP 13H POP 12H POP PSW POP A ; 恢复现场:PSW、A、R2、R3、R4 SETB EA RETITAB: DB

温馨提示

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

评论

0/150

提交评论