资源描述:
《单片机实验 io口的输入输出实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验二I/O口输入、输出实验一、实验目的1.学习I/O口的使用方法。2.学习延时子程序、查表程序的编写和使用。二、参考程序框图开始读入P1口值置计数初值=0P1口置1将读入的值输出到P0P1=0FFH?YN输入值右移1位到CyCy=0?N计数值+1Y以计数值查段码表段码输出到P2开始延时设置初始值数据输出左移一位三、程序设计1、P0口循环点亮程序ORG0030HSTART:MOVP2,#00H;//消影MOVA,#01H;//LOOP:MOVP2,A;//点亮一个led灯ACALLDELAY;//延时500msRLA;//左移一位AJMPLOOP;//跳转循环DELAY
2、:MOVR7,#10;//延时程序DE1:MOVR6,#200;DE2:MOVR5,#123;DJNZR5,$;DJNZR6,DE2;DJNZR7,DE1;RETEND2、I/O口输入输出(方法一)ORG0000H;START:MOVP2,#00H;//初始化MOVP0,#00H;MOVP1,#0FFH;//p1口初始化给ffh值MOVDPTR,#TABLE;//表地址存入DPTRMOV50H,#0FEH;//比较初值载入地址50hL0:MOVA,P1;//按键消抖CJNEA,#0FFH,L1;AJMPL0;L1:MOVA,P1;CJNEA,#0FFH,LL1;AJMP
3、L0;LL1:CJNEA,50H,LL2;//是否与地址50h中数据相等MOVP0,A;//相等输出对应led灯MOVA,#00H;MOVCA,@A+DPTR;MOVP2,A;//输出表格数据到数码管LCALLDELAY;//延时LJMPSTART;//返回程序开头LL2:XCHA,50H;//交换数据RLA;//左移XCHA,50H;//再次交换,此时地址50h中数据左移一位INCDPTR;//表格数据地址加一LJMPLL1;//返回继续比较DELAY:MOVR7,#01H;//延时程序DE1:MOVR6,#28H;DE2:MOVR5,#5AH;DJNZR5,$;DJ
4、NZR6,DE2;DJNZR7,DE1;RETTABLE:;//DB0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB06H,5BH,4FH,66H,6DH,7DH,07H,7FH;//表格数据END程序二(方法二)ORG0000HMOVP2,#00H;//I./O口初始化MOVP1,#0FFH;//P1口赋FFH初值MOVP0,#00H;START:MOVP2,#00H;//P2清0;MOVP0,#00H;//P0清0;MOVR1,P1;MOVA,R1;//读P1口CJNEA,#0FFH,L1;//是否有数据输入AJMPSTART;//无输入
5、则跳转,继续查询LCALLDELAY;L1:MOVR1,P1;//消除按键抖动MOVA,R1;CJNEA,#0FFH,LL1;AJMPSTART;LL1:CJNEA,#0FEH,LL2;//是否按键1输入MOVP2,#06H;//是则P2输出相应的按键号码CPLA;//A取反MOVP0,A;//输出到P0口LCALLDELAY;//延迟AJMPLP;//跳转到LPLL2:CJNEA,#0FDH,LL3;//是否按键2输入MOVP2,#5BH;//以下同上CPLA;MOVP0,A;LCALLDELAY;AJMPLP;LL3:CJNEA,#0FBH,LL4;//判断按键3是
6、否按下MOVP2,#4FH;CPLA;MOVP0,A;LCALLDELAY;AJMPLP;LL4:CJNEA,#0F7H,LL5;//判断按键4是否按下MOVP2,#66H;CPLA;MOVP0,A;LCALLDELAY;AJMPLP;LL5:CJNEA,#0EFH,LL6;//判断按键5是否按下MOVP2,#6DH;CPLA;MOVP0,A;LCALLDELAY;AJMPLP;LL6:CJNEA,#0DFH,LL7;//判断按键6是否按下MOVP2,#7DH;CPLA;MOVP0,A;LCALLDELAY;AJMPLP;LL7:CJNEA,#0BFH,LL8;//判断
7、按键7是否按下MOVP2,#07H;CPLA;MOVP0,A;LCALLDELAY;AJMPLP;LL8:CJNEA,#7FH,LP;//判断按键8是否按下MOVP2,#7FH;CPLA;MOVP0,A;LCALLDELAY;LP:AJMPSTART;//跳转回程序开头DELAY:MOVR7,#01H;//延时程序DE1:MOVR6,#28H;DE2:MOVR5,#5AH;DJNZR5,$;DJNZR6,DE2;DJNZR7,DE1;RETEND四、思考题1、LED循环方向更改:RLA;改成RRA;1S的延时程序:DELAY:MOVR7,