端口按键移位程序.doc

上传人:壹****1 文档编号:556939303 上传时间:2022-11-11 格式:DOC 页数:4 大小:599.01KB
返回 下载 相关 举报
端口按键移位程序.doc_第1页
第1页 / 共4页
端口按键移位程序.doc_第2页
第2页 / 共4页
端口按键移位程序.doc_第3页
第3页 / 共4页
端口按键移位程序.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《端口按键移位程序.doc》由会员分享,可在线阅读,更多相关《端口按键移位程序.doc(4页珍藏版)》请在金锄头文库上搜索。

1、实验报告电子班 倪佳华 222009315220022一. 实验名称端口按键移位二. 实验器材MCU模块,独立按键模块,八路跑马灯模块,导线若干三实验原理MCU模块图和八路跑马灯模块:独立按键模块图:四实验内容1. 用8PIN线,JP32连接JP44,JP53(P3口)连接JP37,即P1口连发光二极管,P3口连按键,k6键管往上,k7键管往下2. 新建工程3. 设置工程参数4. 新建汇编文件main.asm5. 将main.asm添加至项目6. 输入程序,编译,调试,运行程序内容如下:汇编程序:ORG 0080hCODE_SEGSEGMENTCODEDATA_SEGSEGMENTDATAST

2、ACK_SEGSEGMENTIDATARSEGDATA_SEGKEY_S:DS1KEY_V:DS1RSEGSTACK_SEGSTACK:DS20K1BITP3.6; K2BITP3.7; CSEGAT0000HJMPMAIN;=RSEGCODE_SEGMAIN:MOVSP,#(STACK-1); 设置栈指针MOVP1,#0FEH; 初始点亮LED P00MOVKEY_V,#03H; 初始键值KEY_CHKSW:; 循环检测按键是否按下ACALLSCAN_KEY; 输入按键状态MOVKEY_S,AXRLA,KEY_V; 检查按键值是否改变JZKEY_CHKSW; 若无键被按,则跳回KEY_CHK

3、SWMOVR7,#10; 延时10msACALLDELAYMS; 延时去抖ACALLSCAN_KEY; 再次检查按键值MOVKEY_S,AXRLA,KEY_VJZKEY_CHKSWMOVKEY_V,KEY_S; 保存按键状态ACALLPROC_KEY;SJMPKEY_CHKSWMOVC,K2MOVACC.1,CRET;= SCAN_KEY:; 扫描按键; 传入参数:无; 返回值:A - 按键状态CLRAMOVC,K1MOVACC.0,CPROC_KEY:; 按键处理子程序; 传入参数: KEY_V - 按键值; 返回值: 无MOVA,KEY_VJNBACC.0,PROC_K1JNBACC.1,

4、PROC_K2RETPROC_K1:; 按键K1处理程序MOVA,P1; 右移RRAMOVP1,ARETPROC_K2:; 按键K2处理程序MOVA,P1; 左移RLAMOVP1,A RET;= DELAYMS:; 延时子程序; 传入参数:R7 - 延时值(MS) ; 返回值:无MOVA,R7JZEND_DLYMSDLY_LP1:MOVR6,#185DLY_LP2:NOPNOPNOPDJNZR6,DLY_LP2DJNZR7,DLY_LP1END_DLYMS:RET ENDC语言程序:#include #include unsigned char scan_key();void proc_key

5、(unsigned char key_v);void delayms(unsigned char ms);sbitK1 = P36;sbitK2 = P37;char code SST5163 _at_ 0x003b;main()unsigned char key_s,key_v;key_v = 0x03;P1 = 0xfe;while(1)key_s = scan_key();if(key_s != key_v)delayms(10);key_s = scan_key();if(key_s != key_v)key_v = key_s;proc_key(key_v);unsigned cha

6、r scan_key()unsigned char key_s;key_s = 0x00;key_s |= K2;key_s = 1;key_s |= K1;return key_s;void proc_key(unsigned char key_v)if(key_v & 0x01) = 0)P1 = _cror_(P1,1);else if(key_v & 0x02) = 0)P1 = _crol_(P1, 1);void delayms(unsigned char ms)/ 延时子程序unsigned char i;while(ms-)for(i = 0; i 120; i+);五实验现象与实验结果1上电复位后,八路跑马灯第一个点亮2按下K7键,放开,下一个灯点亮,上一个灯熄灭3按下K6键,放开,上一个灯点亮,下一个灯熄灭4循环,实现灯的移位六实验总结(1)按键处理时要进行一定的延时来进行消抖,使按键读入稳定(2)汇编程序中对某一引脚的操作和C语言不同:汇编用点操作符,p1.1,p1.2;C语言中用,P11,P12。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号