预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://hi.baidu.com"百度空间|HYPERLINK"http://www.baidu.com/"百度首页|HYPERLINK"https://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u=http://hi.baidu.com/caogos/blog/item/5fefe802ec8dffeb08fa932e%2Ehtml"登录 HYPERLINK"http://hi.baidu.com/st/reg.html" HYPERLINK"http://my.52725.com/caogos"caogos HYPERLINK"http://my.52725.com/caogos"主页HYPERLINK"http://my.52725.com/caogos/blog"博客HYPERLINK"http://my.52725.com/caogos/album"相册HYPERLINK"http://my.52725.com/caogos/profile"个人档案HYPERLINK"http://my.52725.com/caogos/friends"好友 查看文章用24片8255a扩展单片机io口 2008年12月12日星期五20:29 one:74hc4514后接74hc138扩展单片机io口 原理图 原理图没有画完,只画了三个8255a,还有21个未画,未画的21个的接法与这三个类似,只有片选线的标号不一样。当然这里还有每片8255a的pa,pb,pc上的每个引脚与二极管之间的标号不一样。 主函数流程图 闪烁二极管子函数流程图 源程序清单 ;设计任务:循环依次点亮二极管;主要思想:通过DPTR加一实现端口切换,通过循环左移端口状态控制字实现引脚切换;资源占用:片内ROM的00H:复位入口;2CH:主函数入口。;片内7FH,7EH,7DH被延时子程序DELAY1S占用;R0存放状态控制字,控制端口的第几个引脚上的二极管被点亮;第一片8255a的pa,pb,pc和控制寄存器的地址分别是0FE00H,0FE01H,0FE02H,0FE03H;-----------这里需要修改;最后一片8255a的pa,pb,pc和控制寄存器的地址分别是0FE5CH,0FE5DH,0FE5EH,0FE5FH;-----------这里需要修改 ORG00H;复位入口LJMPMAINORG2CH;主函数入口MAIN:MOVSP,#30H;初始化堆栈MOVR0,#0FEH;初始化状态控制字LCALLINITIAL8255A;初始化8255aLCALLDIODE;循环闪烁二极管 ;子函数INITIAL8255A的功能是初始化所有8255aINITIAL8255A:LCALLCONFIGURE8255A;设置所有8255aLCALLINITIAL8255APORT;初始化所有8255aRET ;子函数CONFIGURE8255A的功能是设置所有8255aCONFIGURE8255A:MOVDPTR,#0FE03H;初始化子函数CONFIGURE8255A;----------这里需要修改CONFIGURENEXT8255A:MOVA,#80HMOVX@DPTR,A;设置8255aMOVA,DPLCJNEA,#5FH,CONFIGURE8255ACONTINUE;判断是否所有的8255a都被初始化了;----------这里需要修改RETCONFIGURE8255ACONTINUE:LCALLNEXTCONTROLADDRESS;取下一个控制寄存器的地址LJMPCONFIGURENEXT8255A ;子函数NEXTCONTROLADDRESS的功能是初始化8255a的所有端口NEXTCONTROLADDRESS:MOVA,DPLADDA,#4HMOVDPL,A;DPTR加4后得到下一片8255a的控制寄存器的地址RET ;子函数INITIAL8255A的功能是初始化8255a的所有端口INITIAL8255APORT:MOVDPTR,#0FE00H;----------这里需要修改INITIALNEXTPORT:MOVA,#0FFHMOVX@DPTR,A;初始化端口MOVA,DPLCJNEA,#5EH,INITIAL8255APORTCONTINUE;判断是否将所有端口都初始化了;----------这里需要修改RETINITIAL8255APORTCONTINUE:LCALLNEXTPORT;取下一个端口LJMPINITIALNEXTPORT ;子函数NEXTPORT的功能是取下一个端口地址NEXTPORT:MOV