资讯详情

51单片机仿真实例

l示例6—扫描与判断—(单端口)位扫描与字节(多端口)扫描

这是一个常用程序段— 子程序— 标准程序,通过 端口扫描而获得输入数据或控制输出数据,达到节省位或字节的目的—节约硬件资源。 关于扫描,可以从位及其取反实现流水灯着手来理解。可以通过移位实现流水灯—扫描。可以通过字节数据(01H,02H,04H,08H,10H,20H,40H,80H—阳极管)的端口发送实现流水灯—扫描。可以通过数据表( 01H,02H,04H,08H,10H,20H,40H,80H—阴极管)实现流水灯—扫描。可以通过循环跳转实现流水灯—扫描。扫描注意 入比出查—获得输入要比较数据、发送输出要检查出口 扫描获取端口字节 扫描输出 位移动产生动态效果( 01、 02、 04、 08、 10、 20、 40、 80),可以用字节表 扫描输出字符字节,通过 延时可以变换字符以便造成数字进位效果 ORG 0000H ART: dbuf equ 30h ;置存储区首址 temp equ 40h ;置缓冲区首址 org 00h mov 30h,#2 ;存入数据 mov 31h,#0 mov 32h,#1 mov 33h,#0 mov 34h,#7 mov 35h,#1 mov r0,#dbuf mov r1,#temp mov r2,#6 ;六位显示器 mov dptr,#segtab ;段码表首地址 dp00: mov a,@r0 ;取要显示的数据 movc a,@a+dptr ;查表取段码 mov @r1,a ;段码暂存 inc r1 inc r0 djnz r2,dp00 disp0: mov r0,#temp ;显示子程序 mov r1,#6 ;扫描6次 mov r2,#01h ;从第一位开始 dp01: mov a,@r0 mov p2,a ;段码输出 mov a,r2 ;取位码 mov p1,a ;位码输出 acall delay ;调用延时 mov a,r2 rl a mov r2,a inc r0 djnz r1,dp01 sjmp disp0 segtab: db 0C0H,0F9H,0A4H,0B0H,99H,92H ;共阳极管 db 82H,0F8H,80H,90H,88H,88H,83H delay: mov r4,#29h ;延时子程序 aa1: mov r5,0ffh aa: djnz r5,aa djnz r4,aa1 ret end ??????????????????????? ************************************************************************ 还可以用其他程序形式进行扫描,像循环、递增或递减判断程序等。扫描技术可以用于点阵显示,液晶板( )显示。这些都需要字符编码、显示延时、扫描端口以充分利用资源(节约资源)。 l 实例1— 关于动态显示—LED 闪烁 ORG 0000H START: MOV A,#0F ;字节传送 MOV P3,A ;字节传送 MOV P1,A MOV C, 0A0H;位传送 JNB 0A0H,GUAN;判断位电平低为真,则转移;直接地址位为0转移 MOV P1,#00H; P1口先赋#0FFH,再赋#00H,则产生闪烁 RET GUAN : MOV P3,#00H;P3口先赋#0FFH,再赋#00H,则产生闪烁,也可以使用取反指令 RET ;可以产生闪烁效果 END 其他方法(如:延时子程序)也可以实现动态显示。 l
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台