#include "reg51h"
#include "absacch"
#define PA XBYTE[0x0000]
#define PB XBYTE[0x0001]
#define PC XBYTE[0x0002]
#define PD XBYTE[0x0003]
void delay(unsigned int i){
while(i--);
}
void main(void){
unsigned long a=0xfffffffe;
char i;
delay(50000);
PD=0x80;
while(1){
a=0xfffffffe;
for(i=0;i<24;i++){
PA=a%0x100;
PB=a/0x100%0x100;
PC=a/0x10000%0x100;
delay(20000);
a=(a<<1)+1;
}
}
}
按照你的电路,写了用一个灯流动显示的程序,供参考。
应该是个液晶显示的程序,这里最主要的不是读程序,而是首先要很好的了解你使用的液晶的硬件资料,然后再根据自己的理解去写程序,,,现在的朋友都已经很好了,一般网上都会有相关的参考程序或者购买LCD时有附带的演示代码,,想当初我在搞这些东西的时候,就只有一份器件资料,只能靠自己的理解在那里反复琢磨,但最后还是调试出来的(有些题外话了)。
当然,如果有参考代码在的话,会让你在有很好的了解期间基础上,事半功倍,读代码,一般局部的读,理解局部功能了,然后在一行行看,比如:
HE2: MOV DPTR, #PCC
MOVX A, @DPTR
JNB ACC7, HE2
这里应该是读“忙”标志位
1、地址确定
因为A10A9A8A7A6A5A4A3=01010011,A2A1=11为控制字端口,A2A1=10为C口,A2A1=01为B口,A2A1=00为A口,A0为0,所以8255A地址范围为24CH~24FH。
2、控制字确定
因为A口为方式0输出,B口为方式0输入,所以控制字为10000010B=82H
3、初始化程序
MOV AL,82H
MOV DX,24FH
OUT DX,AL
附8255知识:
8255是微机并行接口芯片。
8255是可编程I/O口扩展芯片。对8255输入不同的指令可改变I/O口的工作方式。8255与单片机系统连接方式简单,工作方式由程序设定,图2为8255的引脚图。
8255内部有4个寄存器:分别为寄存器A、B、C和控制寄存器。A、B、C寄存器的数据就是引脚PA7~PA0、PB7~PB0、 PC7~PC0上输入或输出的数据。而控制寄存器的数据则表明PA、PB、PC的工作方式。通过CS、A0、A1、RD和WR对4个寄存器进行 *** 作。
1)CS为低电平时选通8255;2)A1、A0为地址选通;3)RD和WR为读、写信号:RD为低、WR为高时为读方式,RD为高、WR为低时为写方式。4)D0~D7为数据口。
向控制寄存器写入不同的数据可以使8255工作在三种不同的方式下。这里只介绍应用最多的方式0。方式0下8255的PA、PB及PC口上半部分(PC7~PC4)和下半部分(PC3~PC0)中任何一个端口都可以设定为输入或输出,PC口还可以进行位 *** 作。控制寄存器各位的含义如图3所示。 SLPC-24中8255工作在方式0。PA、PB为输入口、PC为输出口,对控制寄存器写入的数据为10010010B,即92H。
别人 写的 我看见了 你好好看看吧
以上就是关于c51外接8255拓展24盏流水灯全部的内容,包括:c51外接8255拓展24盏流水灯、谁能给我解释一下下面的这个单片机汇编程序是什么意思请服具体些、有关单片机的作业题目 初始化并行I/O芯片8255,使其A口,B口,C口为基本I/O输出口 程序应该怎么设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)