實 習 七
紅 綠 燈
.INCLUDE
80C196KC.H ;定義各暫存器與I/O之位址.SYMBOLS
.CHIP
80196KC ;定義晶片編號.ORG
0A000H ;CCR暫存器的位址 LDB AL,#80H ;PPI_CW為單片上之8255位址﹐設定 STB AL,PPI_CW ;為80H (A、B、C埠為輸出)START:
LDB AL,#100001B ;北向綠燈亮﹐東向紅燈亮 STB AL,PPI_PALD DELY2,#40 ;
上述動作DELAY 4SecCALL DELAY
LDB BL,#5 ;北向綠燈閃5次LOOP:
ANDB AL,#011111B ;
北向綠燈熄﹐東向紅燈亮 STB AL,PPI_PALD DELY2,#1 ;
上述動作 DELAY 0.1Sec CALL DELAY ORB AL,#100000B ;北向綠燈亮﹐東向紅燈亮 STB AL,PPI_PALD DELY2,#1
CALL DELAY
DJNZ BL,LOOP IF BL
不為0跳至LOOP LDB AL,#010001B ;北向黃燈亮﹐東向紅燈亮 STB AL,PPI_PALD DELY2,#20 ;
上述動作 DELAY 2SecCALL DELAY
LDB AL,#001100B ;北向紅燈亮﹐東向綠燈亮 STB AL,PPI_PALD DELY2,#40
CALL DELAY
LDB BL,#5
東向綠燈閃5次LOOP1:
ANDB AL,#111011B ;
北向紅燈亮﹐東向綠燈熄 STB AL,PPI_PALD DELY2,#2
CALL DELAY
ORB AL,#000100B ;
北向紅燈亮﹐東向綠燈亮 STB AL,PPI_PALD DELY2,#2
CALL DELAY
DJNZ BL,LOOP1
LDB AL,#001010B ;北向紅燈亮﹐東向黃燈亮 STB AL,PPI_PALDB DELY2,#20
CALL DELAY
SJMP START ;
從頭開始;延遲副程式 (DELAY 0.25E-5 *DELY2 *DELY1 Sec)
DELAY:
LD DELY1,#40000
DJNZW DELY1,$ ;IF DELY1
不為0跳至自己 DJNZW DELY2,DELAY ; ;IF DELY2不為0跳至DELAYRET
END