簡(jiǎn)單的并口擴(kuò)展演示
本例采用處部地址擴(kuò)展了兩個(gè)IO口,并實(shí)現(xiàn)16個(gè)發(fā)光二極管的流水燈實(shí)驗(yàn).程序簡(jiǎn)單,旨在演示并口的擴(kuò)展操作
/***************************************
*程序:簡(jiǎn)單的并口擴(kuò)展演示
*方法:絕對(duì)地址訪問(wèn)
*時(shí)間:2008-5-1
*作者:gys
***************************************/
#include
#include //用絕對(duì)地址訪問(wèn)時(shí)要包含此文件
#define P4 XBYTE[0xfeff]//定義訪問(wèn)外部端口地址0xfeff,一個(gè)字節(jié)長(zhǎng)度
#define P5 XBYTE[0xfdff]
void delay(unsigned int n)//延時(shí)
{
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);
}
}
/***************************************
*程序:簡(jiǎn)單的并口擴(kuò)展演示
*方法:指針
*時(shí)間:2008-5-1
*作者:gys
***************************************/
#include
void delay(unsigned int n)//延時(shí)
{
while(n--);
}
void main()
{
unsigned int s=0x01;
unsigned char xdata *P4=0xfeff;//定義一個(gè)指針指向外部地址0xfeff
unsigned char xdata *P5=0xfdff;//定義一個(gè)指針指向外部地址0xfdff
while (1)
{
*P4=s;
*P5=s>>8;//把S的高8位送P5口
if (s==0) s=0x01;
s<<=1;
delay(10000);
}
}
;/***************************************
;*程序:簡(jiǎn)單的并口擴(kuò)展演示
;*方法:匯編
;*時(shí)間: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