![[精品]按键实验指导书.doc_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-3/19/355dcfe7-3e92-4d9b-9aff-cd2b778a245e/355dcfe7-3e92-4d9b-9aff-cd2b778a245e1.gif)
![[精品]按键实验指导书.doc_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-3/19/355dcfe7-3e92-4d9b-9aff-cd2b778a245e/355dcfe7-3e92-4d9b-9aff-cd2b778a245e2.gif)
![[精品]按键实验指导书.doc_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-3/19/355dcfe7-3e92-4d9b-9aff-cd2b778a245e/355dcfe7-3e92-4d9b-9aff-cd2b778a245e3.gif)
![[精品]按键实验指导书.doc_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-3/19/355dcfe7-3e92-4d9b-9aff-cd2b778a245e/355dcfe7-3e92-4d9b-9aff-cd2b778a245e4.gif)
![[精品]按键实验指导书.doc_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-3/19/355dcfe7-3e92-4d9b-9aff-cd2b778a245e/355dcfe7-3e92-4d9b-9aff-cd2b778a245e5.gif)
全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品按键实验指导书 按健实验实验一按下一个健,红色LED亮,绿色灭,按下另一个键,红色LED灭,绿色亮 一、新建项目key_1.prj,加入以下模块文件key_1.asm;定义变量g_KeyValue EQU34H b_PressKey BIT00H b_KeyValid BIT01H;定义代码段org0000H Reset:ljmp Mainorg0050H Main:lcall InitSystemMainLoop:lcall ScanKeylcall ReleaseKeylcall ControlKeyjmp MainLoop;子程序-InitSystem:clr b_PressKey clr b_KeyValid retScanKey:jnb b_PressKey,Ke0;若键已按下,则无需扫描ret Ke0:mov A,#03H orlP3,A mov A,P3anl A,#03H cjnea,#03H,Ke2Ke1:clr b_PressKey retKe2:lcall Delay_1ms mov a,P3anl a,#03H cjnea,#03H,Ke3sjmp Ke1Ke3:mov g_KeyValue,a setb b_PressKey setbb_KeyValid ret;-ReleaseKey:jb b_PressKey,RK1ret RK1:mov a,P3anl a,#03H cjnea,#03H,RK2clr b_PressKey;键释放RK2:ret;-ControlKey:jb b_KeyValid,CK1ret CK1:mov a,g_KeyValue cjnea,#01H,CK2clr p3.2setb p3.3sjmp CK3CK2:clr p3.3setb p3.2CK3:clr b_KeyValid ret;-Delay_1ms:mov r7,#200D_1ms1:nop djnzr7,D_1ms1ret END 二、编译,全速运行 三、按下一个健,看其显示如何变化,再按另一个健,看其显示如何变化 四、分析此程序如何实现按健功能 五、修改源程序,原来红色亮健改成绿色亮健,原来绿色亮健改成红色亮健实验二按下一个健,数码管显示增加一;按下另一个健,数码管显示减少 一一、新建项目key_1.prj,加入以下模块文件key_2.asm;定义变量g_DisplayBuff_1EQU30H g_DisplayBuff_2EQU31H g_Counter EQU32H g_KeyValue EQU34H b_PressKey BIT00H b_KeyValid BIT01H;定义代码段org0000H Reset:ljmp Mainorg0050H Main:lcall InitSystemMainLoop:lcall ScanKeylcall ReleaseKeylcall ControlKeylcall DisplayCounterjmp MainLoop;子程序-InitSystem:mov g_Counter,#50clr b_PressKey clr b_KeyValid retScanKey:jb b_PressKey,Ke1mov A,#03H orlP3,A movA,P3anl A,#03H cjnea,#03H,Ke2Ke0:clr b_PressKey Ke1:mov g_KeyValue,#0FFH retKe2:lcall Delay_1ms mov a,P3anl a,#03H cjnea,#03H,Ke3sjmp Ke0Ke3:mov g_KeyValue,a setbb_PressKey setbb_KeyValid ret;-ReleaseKey:jb b_PressKey,RK1ret RK1:mov a,P3anl a,#03H cjnea,#03H,RK2clr b_PressKey RK2:ret;-ControlKey:jb b_KeyValid,CK1ret CK1:mov a,g_KeyValue cjnea,#01H,CK2dec g_Counter sjmp CK3CK2:inc g_Counter CK3:clr b_KeyValid ret;-DisplayCounter:mov a,g_Counter movb,#10div abmov g_DisplayBuff_1,a mov g_DisplayBuff_2,b lcallDisplay ret;-Display:mov dptr,#charOnLED mov a,g_DisplayBuff_1movc a,a+dptr movp1,a setbp1.7lcall Delay_1ms movp1,#0FFH lcall Delay_1ms mova,g_DisplayBuff_2movc a,a+dptr movp1,a clrp1.7lcall Delay_1ms movp1,#7FH lcall Delay_1ms ret;-Delay_1ms:mov r7,#200D_1ms1:nop djnzr7,D_1ms1ret;-;-定义数据段-charOnLED:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB80H,90H,88h,83h,0C6H,0A1H,86H,8EH END 二、编译,全速运行 三、按下一个健,看其显示如何变化,再按另一个健,看其显示如何变化 四、分析此程序如何实现按健功能 五、修改源程序,原来增一健变成减一健,原来减一健变成增一健 六、将此程序用编程器写入89C51后放入系统中运行实验三一个健为On健,当按下此健时数码管每隔1秒显示1,另一个健为Off健,当按下此健时数码管停止加1显示 一、新建项目key_2.prj,加入以下模块文件key_3.asm;定义变量g_DisplayBuff_1EQU30H g_DisplayBuff_2EQU31H g_Counter EQU32H g_KeyValue EQU34H g_Timer_1s EQU35H b_PressKey BIT00H b_KeyValid BIT01H b_IncCounter BIT02H;定义代码段org0000H Reset:ljmp Mainorg0050H Main:lcall InitSystemMainLoop:lcall ScanKeylcall ReleaseKeylcall ControlKeylcall DisplayCounterlcall IncCounterjmp MainLoop;子程序-InitSystem:mov g_Counter,#00clr b_PressKey clr b_KeyValid clr b_IncCounter retScanKey:jb b_PressKey,Ke1movA,#03H orlP3,A movA,P3anl A,#03H cjnea,#03H,Ke2Ke0:clrb_PressKey Ke1:mov g_KeyValue,#0FFH retKe2:lcall Delay_1ms mova,P3anl a,#03H cjnea,#03H,Ke3sjmp Ke0Ke3:mov g_KeyValue,a setbb_PressKey setbb_KeyValid ret;-ReleaseKey:jb b_PressKey,RK1ret RK1:mova,P3anl a,#03H cjnea,#03H,RK2clrb_PressKey RK2:ret;-ControlKey:jb b_KeyValid,CK1ret CK1:mova,g_KeyValue cjnea,#01H,CK2setbb_IncCounter mov g_Timer_1s,#255sjmpCK3CK2:clrb_IncCounter CK3:clrb_KeyValid ret;-IncCounter:jb b_IncCounter,IC1ret IC1:dec g_Timer_1s mova,g_Timer_1s jnzIC2mov g_Timer_1s,#255inc g_Counter mova,g_Counter cjnea,#100,IC2movg_Counter,#0IC2:ret;-DisplayCounter:mova,g_Counter movb,#10div abmovg_DisplayBuff_1,a movg_DisplayBuff_2,b lcallDisplay ret;-Display:mov dptr,#charOnLED mova,g_DisplayBuff_1movc a,a+dptr movp1,a setbp1.7lcallDelay_1ms mova,g_DisplayBuff_2movc a,a+dptr movp1,a clrp1.7lcallDelay_1ms ret;-Delay_1ms:mov r7,#200D_1ms1:nop nopnop djnzr7,D_1ms1ret;-;-定义数据段-charOnLED:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB80H,90H,88h,83h,0C6H,0A1H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能源汽车电子级多晶硅料年度采购与供应协议
- 艺术类教育机构全面承包与教学质量保障协议
- 网络直播平台主播品牌代言授权合同
- 绿色物流电商平台仓储动线规划与实施合同
- 离婚失踪配偶财产安全处置及代管合同
- 《医疗救护基础》课件
- 大型国企资金集中管理体系建设
- 《T培训教程》课件
- 医学研究进度汇报
- 《张华护士长》课件
- 灭火和应急疏散流程图
- 重大危险源评估标准
- 施工材料供应保障措施
- 2022年《道德经》全文+拼音
- sql优化-oracle数据库ppt课件
- 统编版《道德与法治》四年级下册第10课《我们当地的风俗》精品课件
- 土地模板-市场比较法
- 家具厂首件检验记录表
- 太上碧落洞天慈航灵感度世宝忏
- 国家标准硬度转换表参考模板
- 轮胎式装载机检测报告(共5页)
评论
0/150
提交评论