历史上的今天
今天是:2025年01月29日(星期三)
2021年01月29日 | 在51单片机系统中使用8155
2021-01-29 来源:eefocus
简介:单片机自身的 RAM 存储空间和引脚数目往往有些不足,当需要在外部拓展不太多的时候,8155 芯片就是首选了。
一片8155,可以提供256字节的RAM,3个并行IO接口和一个14位的定时器。
8155的内部还集成了地址锁存器,如果只是需要扩展8155,就可以省去常用的地址锁存器74LS373。
下面,先写一个使用单片机自身资源来驱动16个LED进行流水的程序。
然后,再把它改造为利用8155来驱动。
利用51单片机驱动16个LED流水灯的汇编语言程序如下。
;=========================================================
;16个LED接到P0,P2。
ORG0000H
START:
MOV30H,#254;片内RAM
MOV31H,#255;30H31H中仅有一个低电平
;-------------------------------------
MOVR2,#16;循环16遍
LOOP:
MOVP0,30H;输出到LED
MOVP2,31H
CALLDLY200MS;延时
CALLSHIFT_L;移位
DJNZR2,LOOP;循环16遍
SJMPSTART;再从头开始
;-------------------------------------
SHIFT_L:;16位数左移一位
MOVA,30H
RLCA;高位移入Cy
MOV30H,A
;---------------
MOVA,31H
RLCA;Cy移入低位,且高位移入Cy
MOV31H,A
;---------------
MOVA,30H
MOVACC.0,C;把Cy(高位)写入低位
MOV30H,A
;---------------
RET
;-------------------------------------
DLY200MS:;延时200ms,误差0us
MOVR6,#197;
DL0:
MOVR7,#250;1
DJNZR7,$;2*250=500
DJNZR7,$;2*256=512
DJNZR6,DL0;(1+500+512+2)*197=199955
MOVR7,#19;1
DJNZR7,$;2*19=38
NOP;1
RET;1+199955+1+38+1+2=199998
;-------------------------------------
END
;========================================================
上述程序所对应的电路,太简单了,就不在这里显示插图了,读者可自行画图。
当在电路中加入了一片8155,电路可以如下连接:

图中,由于使用了P2.7和P2.0连接到CS和IO/M,所以,8155的接口地址、存储器地址分别为:
;I/O地址:
COMMANDEQU7F00H
PORTAEQU7F01H
PORTBEQU7F02H
PORTCEQU7F03H
TIMER_LEQU7F04H
TIMER_HEQU7F05H
;MEM地址:
;7E00H~7EFFH
因此,前面的流水灯程序,就要如下修改:
;=========================================================
;51单片机流水灯(16个灯)
;P0,P2外接16个LED--改为PA,PB
;30H,31H片内RAM----改为片外
ORG0000H
START:
MOVDPTR,#COMMAND
MOVA,#00000011B;PA方式0输出,PB方式0输出
MOVX@DPTR,A
INCDPTR;转到PA
MOVA,#00110011B;测试共阳极7段数码管
MOVX@DPTR,A
INCDPTR;转到PB
MOVA,#00001111B
MOVX@DPTR,A
;MOV30H,#254;--改为7E30H
;MOV31H,#255;--改为7E31H
MOVDPTR,#7E30H
MOVA,#254
MOVX@DPTR,A
MOVDPTR,#7E31H;片外RAM7E30H7E31H
MOVA,#255;中仅有一个低电平
MOVX@DPTR,A
;-------------------------------------
MOVR2,#16;循环16遍
LOOP:
;MOVP0,30H;输出到LED
;MOVP2,31H
MOVDPTR,#7E30H
MOVXA,@DPTR
MOVDPTR,#PORTA
MOVX@DPTR,A
MOVDPTR,#7E31H
MOVXA,@DPTR
MOVDPTR,#PORTB
MOVX@DPTR,A
CALLDLY200MS;延时
CALLSHIFT_L;移位
DJNZR2,LOOP;循环16遍
SJMPSTART;再从头开始
;-------------------------------------
SHIFT_L:;16位数左移一位
;MOVA,30H
MOVDPTR,#7E30H
MOVXA,@DPTR
RLCA;高位移入Cy
;MOV30H,A
MOVX@DPTR,A
;---------------
;MOVA,31H
MOVDPTR,#7E31H
MOVXA,@DPTR
RLCA;Cy移入低位,且高位移入Cy
;MOV31H,A
MOVX@DPTR,A
;---------------
;MOVA,30H
MOVDPTR,#7E30H
MOVXA,@DPTR
MOVACC.0,C;把Cy(高位)写入低位
;MOV30H,A
MOVX@DPTR,A
;---------------
RET
;-------------------------------------
DLY200MS:;延时200ms,误差0us
MOVR6,#197;
DL0:
MOVR7,#250;1
DJNZR7,$;2*250=500
DJNZR7,$;2*256=512
DJNZR6,DL0;(1+500+512+2)*197=199955
MOVR7,#19;1
DJNZR7,$;2*19=38
NOP;1
RET;1+199955+1+38+1+2=199998
;-------------------------------------
END
;=========================================================
原来程序中,凡是对30H、31H读写的指令,都改成对片外RAM读写。
凡是对P0、P2输出的指令,都改成对片外PA、PB输出。
这样写,程序的长度,将近增加了一倍。呵呵,没有办法,只能这样。
经过修改,即可利用8155的资源,进行流水灯的实验了。
显示的效果,是只有一个LED流动发光,比较简单,就不在这里插图了。
下一篇:51单片机DIY做PLC编程
史海拾趣
|
【瑞萨 CPK-RA2L1 开发板】测评 - 1:安装 BSP 本帖最后由 MianQi 于 2022-11-12 20:34 编辑 从用户的角度来说,E2 Studio 中最重要的组成部分是两个: 1、 Flexible Software Package (FSP) ,下载地址:https://github.com/renesas/fsp;这个类似于Android 的 SDK - 软件开发包,它有版 ...… 查看全部问答> |
|
[RTT&瑞萨超低功耗MCU RA2L1开发板]测评之基于MDK+RT-Thread的开发环境搭建 本帖最后由 qinyunti 于 2022-11-12 10:27 编辑 准备 前提已经安装MDK和JLINK我这里 MDK版本 V5.37 JLINK版本 V7.82(V7.5以上) 开发板资料参考 https://www2.renesas.cn/cn/zh/products/microcontrollers-microprocess ...… 查看全部问答> |
|
[RTT&瑞萨超低功耗MCU RA2L1开发板]测评之SPI模块介绍驱动分析与测试 SPI模块介绍 参考<<Renesas RA2L1 Group User’s Manual: Hardware>>的章节<<28. Serial Peripheral Interface (SPI) >> 特征 2通道 支持全双工和仅发送模式,支持3线制和4线制 RSPCK极性反转,相位 ...… 查看全部问答> |
|
以前有一个树莓派: 但是。。。没有HDMI的小头的线。。。 这一次,又弄了线,又弄了盒子,甚至于还有天线,也许可以好好的玩玩树莓派了。。。 感谢电子工程世界(eeworld),感谢e络盟(element14) … 查看全部问答> |
|
【行空板 Python编程学习主控板】开箱报告 首先真诚感谢eeword、DFRobot给了我这次参与《DFRobot行空板Python编程学习板》评测的机会。11月7日收到快递通知,因最近一直出差在外,周五回来后拿到快递,立即开箱,首先映入眼帘的是印有行空板及lo ...… 查看全部问答> |
|
一周工作终于结束,每天加班到很晚,都没有什么时间来学习行空板,赶紧趁着周末把玩一下。 所谓工欲善其事必先利其器,我玩任何开发板都有个习惯,那就是上手前先要熟悉一下该板子的硬件设计, ...… 查看全部问答> |
|
【行空板 Python编程学习主控板】评测三、开发板初探之连接方式介绍 在上篇测评二中,对行空板的硬件系统进行了初步的了解,这篇文章对行空板的几种连接方式进行介绍。 行空板支持四种连接方式与开发者的电脑进行连 ...… 查看全部问答> |
|
[RTT&瑞萨超低功耗MCU RA2L1开发板]测评之DAC模块介绍与测试 [localvideo]9fb1cabad83ad0154eb76903f1caaa2f[/localvideo] DAC模块介绍 参考<<Renesas RA2L1 Group User’s Manual: Hardware>>的章节<<31. 12-Bit D/A Converter (DAC12)>> 特征 12位带运放,1通道 ...… 查看全部问答> |
|
【行空板 Python编程学习主控板】评测四、开发板初探之WEB服务器介绍 本帖最后由 天意无罪 于 2022-11-13 20:29 编辑 在上篇评测三中,对行空板的4种连接方式进行了简单介绍,这篇测评文章便介绍通过USB Type-C线连接到行空板自带的WEB服务器,并查看其WEB服务功能有哪 ...… 查看全部问答> |




