標(biāo)題:
求該單片機(jī)程序流程框圖 和 I/0口
[打印本頁]
作者:
17898847059
時間:
2018-1-5 10:48
標(biāo)題:
求該單片機(jī)程序流程框圖 和 I/0口
343257.jpg
(144.47 KB, 下載次數(shù): 27)
下載附件
2018-1-5 10:21 上傳
6.jpg
(13.51 KB, 下載次數(shù): 31)
下載附件
2018-1-5 10:21 上傳
KEY EQU P1 ;
SQ EQU P0 ;
FLAG BIT 2AH.0 ;走動標(biāo)志
DLY BIT 2AH.1 ;延時5秒起動標(biāo)志
FLAG_DLY BIT 2AH.2 ;延時5秒標(biāo)志
FLAG_STOP BIT 2AH.3 ;急停標(biāo)志
FLAG_PRO BIT 2AH.4 ;禁止按鍵標(biāo)志
FLAG_DANBU BIT 2AH.5 ;單步操作標(biāo)志
ORG 0000H
AJMP INIT
ORG 000BH
AJMP TIME0
ORG 0030H
INIT:
MOV SP,#30H
MOV SCON,#0H
MOV TMOD,#01H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV R4,#0
MOV R5,#2 ;上下循環(huán)兩次
MOV R7,#2 ;
MOV 50H,#0 ;
MOV 52H,#0 ;
//SETB FLAG
SETB EA
SETB ET0
SETB TR0
ACALL DISPLAY ;
CLR P2.0
////////////////////////////////////
MAIN:
JB FLAG,GO1SET ;啟動轉(zhuǎn),否則下一步
MOV R5,#1
CLR FLAG_PRO ;取消按鍵禁止
CJNE R4,#1,GOA ;對比跳轉(zhuǎn)相應(yīng)工序
AJMP GO1
GOA:
CJNE R4,#2,GOB
AJMP GO2
GOB:
CJNE R4,#3,GOC
AJMP GO3
GOC:
CJNE R4,#4,GOD
AJMP GO4
GOD:
SJMP MAIN
GO1SET:
MOV P2,#0FEH ;啟動前清除指示
MOV R5,#2 ;兩次上下
GO1:
MOV R4,#0 ;清0防止指標(biāo)混亂
ACALL DELYS
//ACALL DELYS
CLR P2.0 ;下降
JB FLAG_STOP,$ ;急停
ACALL DELYS
//ACALL DELYS
CLR P2.4
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
CLR P2.5
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
CLR P2.6
JB FLAG_STOP,$
JB FLAG_DANBU,MAIN;單步停止
JB SQ.2,$ ;限位
GO2:
MOV R4,#0
ACALL DELYS
ACALL DELYS
SETB P2.6 ;上升
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
SETB P2.5
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
SETB P2.4
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
//SETB P2.0
JB FLAG_STOP,$
JB FLAG_DANBU,MAIN
JB SQ.1,$
DJNZ R5,GO1
GO3:
MOV R4,#0
CLR P2.0 ;右移
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
CLR P2.1
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
CLR P2.2
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
CLR P2.3
JB FLAG_STOP,$
JB FLAG_DANBU,NEXT
JB SQ.3,$
SETB DLY ;延時5S
JNB FLAG_DLY,$
CLR FLAG_DLY
CLR DLY
GO4:
MOV R4,#0
ACALL DELYS
//ACALL DELYS
SETB P2.3 ;左移
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
SETB P2.2
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
SETB P2.1
JB FLAG_STOP,$
ACALL DELYS
//ACALL DELYS
//SETB P2.0
JB FLAG_STOP,$
JB FLAG_DANBU,NEXT
JB SQ.4,$
INC R3 ;計(jì)步器
ACALL DISPLAY ;顯示
NEXT:
AJMP MAIN
/////////////////////////////////////////
K1: ;
JNB KEY.0,K1A;檢測P0.0口
AJMP K2
K1A:
ACALL DELY ;延時去抖
JNB KEY.0,K1B;檢測P0.0口
AJMP K2
K1B:
JNB KEY.0,K1B;等待按鍵
JB FLAG,K2
JB FLAG_PRO,K2
MOV P2,#0EH
MOV R4,#2
MOV R5,#1
SETB FLAG_DANBU
RET
K2: ;
JNB KEY.1,K2A
AJMP K3
K2A:
ACALL DELY
JNB KEY.1,K2B
AJMP K3
K2B:
JNB KEY.1,K2B
JB FLAG,K3
JB FLAG_PRO,K3
MOV P2,#0FEH
MOV R4,#1
MOV R5,#1
SETB FLAG_DANBU
RET
K3: ;
JNB KEY.2,K3A
AJMP K4
K3A:
ACALL DELY
JNB KEY.2,K3B
AJMP K4
K3B:
JNB KEY.2,K3B
JB FLAG,K4
JB FLAG_PRO,K4
MOV P2,#0F0H
MOV R4,#4
MOV R5,#1
SETB FLAG_DANBU
RET
K4:
JNB KEY.3,K4A
AJMP K5
K4A:
ACALL DELY
JNB KEY.3,K4B
AJMP K5
K4B:
JNB KEY.3,K4B
JB FLAG,K5
JB FLAG_PRO,K5
MOV P2,#0FEH
MOV R4,#3
MOV R5,#1
SETB FLAG_DANBU
RET
K5:
JNB KEY.4,K5A
AJMP K6
K5A:
ACALL DELY
JNB KEY.4,K5B
AJMP K6
K5B:
JNB KEY.4,K5B
SETB FLAG ;啟動
SETB FLAG_PRO ;禁止按鍵作用
CLR FLAG_STOP ;取消急停
CLR FLAG_DANBU;取消單步
RET
K6:
JNB KEY.5,K6A
AJMP K7
K6A:
ACALL DELY
JNB KEY.5,K6B
AJMP K7
K6B:
JNB KEY.5,K6B
CLR FLAG ;停止運(yùn)行
//SETB FLAG_PRO
RET
K7:
JNB KEY.6,K7A
RET
K7A:
ACALL DELY
JNB KEY.6,K7B
RET
K7B:
JNB KEY.6,K7B
SETB FLAG_STOP ;急停
RET
DELY:MOV R7,#10 ;延時0.5ms
DLY0:MOV R6,#50
DLY1:DJNZ R6,DLY1
DJNZ R7,DLY0
RET
DELYS:MOV R7,#255 ;延時
DLY2:MOV R6,#255
DLY3:DJNZ R6,DLY3
DJNZ R7,DLY2
RET
DISPLAY: ;顯示
MOV R7,#2 ;數(shù)碼管位數(shù)
MOV A,R3
MOV B,#10
DIV AB
MOV 51H,A
MOV 50H,B
MOV DPTR,#TABLE
MOV R0,#50H
LED1:
MOV A,@R0
MOVC A,@A+DPTR //查表得段碼
MOV SBUF,A
STOP:JNB TI,STOP
CLR TI
INC R0
DJNZ R7,LED1
RET
TIME0: ;延時2S
MOV TH0,#03CH
MOV TL0,#0B0H
ACALL K1
JNB DLY,EXIT
INC R2
CJNE R2,#75,EXIT ;5秒
SETB FLAG_DLY
MOV R2,#0
EXIT:
RETI
TABLE:
DB 3fh,06h,5bh,4fh
DB 66h,6dh,7dh,07h
DB 7fh,6fh,77h,7ch
DB 39h,5eh,79h,71h
END
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1