简单的并口扩展演示

本例采用处部地址扩展了两个IO口 , 并实现16个发光二极管的流水灯实验.程序简单 , 旨在演示并口的扩展操作
/***************************************
【简单的并口扩展演示】*程序:简单的并口扩展演示
*方法:绝对地址访问
*时间:2008-5-1
*作者:gys
***************************************/
#include
#include //用绝对地址访问时要包含此文件
#define P4 XBYTE[0xfeff] //定义访问外部端口地址0xfeff,一个字节长度
#define P5 XBYTE[0xfdff]
void delay(unsigned int n) //延时
{
while(n--);
}
void main()
{
unsigned int s=0x01;
while (1)
{
P4=s;
P5=s>>8; //把S的高8位送P5口
if (s==0) s=0x01;
s<<=1;
delay(10000);
}
}
/***************************************
*程序:简单的并口扩展演示
*方法:指针
*时间:2008-5-1
*作者:gys
***************************************/
#include
void delay(unsigned int n) //延时
{
while(n--);
}
void main()
{
unsigned int s=0x01;
unsigned char xdata *P4=0xfeff; //定义一个指针指向外部地址0xfeff
unsigned char xdata *P5=0xfdff; //定义一个指针指向外部地址0xfdff
while (1)
{
*P4=s;
*P5=s>>8; //把S的高8位送P5口
if (s==0) s=0x01;
s<<=1;
delay(10000);
}
}
;/***************************************
;*程序:简单的并口扩展演示
;*方法:汇编
;*时间:2008-5-1
;*作者:gys
;***************************************/
org 00h
ajmp main
org 30h
main: mov R7,#01H
mov R6,#0h
loop: mov dptr,#0feffh
mov a,R7
movx @dptr,a
rlc a
mov R7,a
mov dptr,#0fdffh
mov a,R6
movx @dptr,a
rlc a
mov r6,a
lcall delay
ajmp loop
delay: mov r5,#255
D1: mov R4,#255
D2: nop
nop
nop
djnz r4,D2
Djnz R5,D1
ret
end
 

    推荐阅读