仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下(汇编语言):
- CSEG AT 0000H
- LJMP START
- CSEG AT 4100H
- PA EQU 0CFA0H
- PB EQU 0CFA1H
- PCTL EQU 0CFA3H
- START: MOV DPTR,#PCTL ;置8255A控制字,ABC口均工作,方式0,AC口输出,B口输入
- MOV A,#082
- MOVX @DPTR,A
- LOOP: MOV DPTR,#PB ;从B口读入开关状态值
- MOVX A,@DPTR
- MOV DPTR,#PA ;从A口将状态值输出显示
- MOVX @DPTR,A
- MOV R7,#10H ;延时
- DELO: MOV R6,DEL1
- DEL1: DJNZ R6,DEL1
- DJNZ R7,DEL0
- JMP LOOP
- END
复制代码
c语言:
- #include<absacc.h>
- #define PORTC XBYTE[0Xfefe]
- #define CONTROL XBYTE[0Xfeff]
- void DELAYLONG(void);
- void DELAYSHORT(void);
- void main(void)
- {
- CONTROL=0x80;
- PORTC=0XFF;
- while(1)
- {
- PORTC=0Xde;
- DELAYLONG();
- PORTC=0Xee;
- DELAYSHORT();
- PORTC=0Xef;
- DELAYSHORT();
- PORTC=0Xee;
- DELAYSHORT();
- PORTC=0Xef;
- DELAYSHORT();
- PORTC=0Xee;
- DELAYSHORT();
- PORTC=0Xef;
- DELAYSHORT();
- PORTC=0Xf3;
- DELAYLONG();
- PORTC=0Xf5;
- DELAYSHORT();
- PORTC=0Xf7;
- DELAYSHORT();
- PORTC=0Xf5;
- DELAYSHORT();
- PORTC=0Xf7;
- DELAYSHORT();
- PORTC=0Xf5;
- DELAYSHORT();
- PORTC=0Xf7;
- DELAYSHORT();
- }
- }
-
- void DELAYLONG(void)
- {
- unsigned i;
- for(i=0;i<30000;i++);
- }
复制代码
所有资料51hei提供下载:
23.zip
(90.21 KB, 下载次数: 47)
|