標(biāo)題:
單片機(jī)匯編程序?qū)崿F(xiàn)紅綠燈轉(zhuǎn)換
[打印本頁(yè)]
作者:
lltt
時(shí)間:
2018-11-18 16:23
標(biāo)題:
單片機(jī)匯編程序?qū)崿F(xiàn)紅綠燈轉(zhuǎn)換
通過(guò)masm軟件運(yùn)行該程序
單片機(jī)源程序如下:
STACK SEGMENT STACK 'STACK'
DW 128 DUP(?)
STACK ENDS
DATA SEGMENT;定義8255和8253各端口地址數(shù)據(jù)
PA8255 EQU 3000H
PB8255 EQU 3200H
PC8255 EQU 3400H
CON8255 EQU 3600H
CLK08253 EQU 3800H
CLK18253 EQU 3A00H
CLK28253 EQU 3C00H
CON8253 EQU 3E00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV DX,CON8253;初始化8253通道0
MOV AL,36H;00110110
OUT DX,AL
MOV DX,CLK08253
MOV AX,2710H
OUT DX,AL
MOV AL,AH
OUT DX,AL;通道0初始化完成,工作方式3,初始計(jì)數(shù)值為10000,周期為0.01s
MOV DX,CON8253;通道2初始化完成,工作方式3,計(jì)數(shù)初值為100,由clk0輸入以后周期為1s
MOV AL,96H;10010110
OUT DX,AL
MOV DX,CLK28253
MOV AL,64H
OUT DX,AL
MOV DX,CON8255
MOV AL,80H
OUT DX,AL;8255初始化完成,A,B,C均工作在方式0,即基本的輸入輸出
MOV AL,10H;初始化各燈的狀態(tài)
MOV DX,PA8255
OUT DX,AL;紅燈全亮
MOV DX,PB8255
MOV AL,1FH
OUT DX,AL;黃燈全滅
MOV DX,PC8255
MOV AL,1FH
OUT DX,AL;綠燈全滅
CALL DELAY
BEGIN:
MOV DX,CON8255
MOV AL,80H
OUT DX,AL
MOV AL,10H
MOV DX,PB8255
OUT DX,AL
MOV DX,PA8255
MOV AL,15H
OUT DX,AL;05H=00000101,2、4紅燈亮
MOV DX,PB8255
MOV AL,1FH
OUT DX,AL;0FH=00001111,黃燈全滅
MOV DX,PC8255
MOV AL,1AH
OUT DX,AL;OAH=00001010,1,3綠燈亮
CALL DELAY
MOV DX,CON8253
MOV AL,70H
OUT DX,AL;通道1初始化完成,工作方式0,01110000
MOV DX,CLK18253
MOV AX,0BB8H
OUT DX,AL
MOV AL,AH
OUT DX,AL;0BB8H=3000,即通道1的計(jì)數(shù)值為3000,也就是30S
LOP30_1:
MOV AL,0;掃描PC4口是否有高電平輸入
MOV DX,CON8255
MOV AL,88H;88
OUT DX,AL;改PC口為輸入方式,準(zhǔn)備讀入PC4的值
MOV DX,PC8255
IN AL,DX
AND AL,10H;取PC4的值
CMP AL,10H
JNZ LOP30_1;未檢測(cè)到高電平則繼續(xù)循環(huán)檢測(cè)
MOV DX,CON8255
MOV AL,80H
OUT DX,AX
MOV DX,PA8255
MOV AL,15H;05H=00000101;2,4紅燈亮
OUT DX,AL
MOV DX,PC8255
MOV AL,1FH;0FH=00001111
OUT DX,AL;1、3綠燈滅
MOV DX,PB8255
MOV AL,1AH;0AH=00001010
OUT DX,AL;1、3黃燈開始閃
MOV CX,0
LOP5_1:
MOV DX,CON8255;檢測(cè)PC7高電平
MOV AL,88H
OUT DX,AL;改PC口為輸入方式,準(zhǔn)備讀入PC7
MOV DX,PC8255
IN AL,DX
AND AL,80H;取PC7
CMP AL,80H
JNZ LOP5_1;如果不是高電平則不需要進(jìn)行延時(shí)
CALL DELAY
INC CX
CMP CX,05H
JNZ LOP5_1
MOV DX,CON8255
MOV AL,80H
OUT DX,AL
MOV AL,10H
MOV DX,PB8255
OUT DX,AL
MOV DX,PA8255
MOV AL,1AH
OUT DX,AL;0AH=00001010,1、3紅燈亮
MOV DX,PB8255
MOV AL,1FH
OUT DX,AL;0FH=00001111,黃燈全滅
MOV DX,PC8255
MOV AL,15H
OUT DX,AL;05H=00000101,2、4綠燈亮
CALL DELAY
MOV DX,CON8253;重新寫入方式控制字,0方式
MOV AL,70H
OUT DX,AL
MOV DX,CLK18253
MOV AX,0BB8H
OUT DX,AL
MOV AL,AH
OUT DX,AL;0BB8H=3000,即通道1的計(jì)數(shù)值為3000,也就是30S
LOP30_2:
MOV AL,0;掃描PC4口是否有高電平輸入
MOV DX,CON8255
MOV AL,88H
OUT DX,AL;改PC口為輸入方式,準(zhǔn)備讀入PC4的值
MOV DX,PC8255
IN AL,DX
AND AL,10H;取PC4的值
CMP AL,10H
JNZ LOP30_2;未檢測(cè)到高電平則繼續(xù)循環(huán)檢測(cè)
MOV DX,CON8255
MOV AL,80H
OUT DX,AX
MOV DX,PA8255
MOV AL,1AH;OAH=00001010,1,3路口紅燈亮
OUT DX,AL
MOV DX,PC8255
MOV AL,1FH;0FH=00001111
OUT DX,AL;2、4綠燈滅
MOV DX,PB8255
MOV AL,15H;05H=00000101
OUT DX,AL;2、4黃燈開始閃爍
MOV CX,0
LOP5_2:
MOV DX,CON8255;檢測(cè)PC7高電平
MOV AL,88H
OUT DX,AL;改PC口為輸入方式,準(zhǔn)備讀入PC7
MOV DX,PC8255
IN AL,DX
AND AL,80H;取PC7
CMP AL,80H
JNZ LOP5_2
CALL DELAY
INC CX
CMP CX,05H
JNZ LOP5_2
JMP START;下一次循環(huán)
DELAY PROC NEAR
MOV DX,120;延時(shí)子程序
DELAY1:
MOV BX,1000
DELAY2:
DEC BX
CMP BX,0
JNZ DELAY2
DEC DX
CMP DX,0
JNZ DELAY1
RET
DELAY ENDP
CODE ENDS
END START
復(fù)制代碼
所有資料51hei提供下載:
123456.rar
(1.15 KB, 下載次數(shù): 7)
2018-11-18 16:23 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時(shí)間:
2018-11-18 17:28
補(bǔ)全原理圖或者詳細(xì)說(shuō)明一下電路連接即可獲得100+黑幣
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1