仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (20.78 KB, 下載次數: 32)
下載附件
2018-11-25 16:16 上傳
0.png (16.54 KB, 下載次數: 32)
下載附件
2018-11-25 16:16 上傳
單片機源程序如下(匯編語言):
- 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)
2018-11-25 10:10 上傳
點擊文件名下載附件
111 下載積分: 黑幣 -5
|