?? nuanfeng.asm
字號:
JMP RK21
JMP RK21
JMP RK22
RK20: BS P6,0 ;打開第一個繼電器
BS D0+11,0
BC D0+11,1
RET
RK21: BS P6,0 ;打開2個
BS P6,1
BS D0+11,0
BS D0+11,1
RET
RK22: BC P6,0 ;關
BC P6,1
BC D0+11,0
BC D0+11,1
RET
RKEY3: MOV A,@7 ;時間設定 ,輸出控制
MOV FTIMES,A ;刷新顯示,并置閃爍標志0.5S閃爍7次
BS FLAG1,FTIME
BC FLAG1,FTEMP
RET
RKEY4: MOV A,@7 ;溫度設定
MOV FTIMES,A ;刷新顯示
BS FLAG1,FTEMP
BC FLAG1,FTIME
RET
RKEY5: MOV A,@7
MOV FTIMES,A ;刷新顯示
JBS FLAG1,FTIME
JMP RKEY5TEMP
INC STIME ;時間加1,家到15為0,剛好循環
;AND A,@0X0F
;MOV B,A
;MOV A,STIME
;AND A,@0XF0 ;保護高4位
;XOR A,B
;MOV STIME,A
RET
RKEY5TEMP:
MOV A,@7
MOV FTIMES,A
JBS FLAG1,FTEMP
JMP NOABLESET
INC STEMP ;溫度設定值加1
MOV A,STEMP ;
SUB A,@80
JBC R3,C
RET
MOV A,@0
MOV STEMP,A
RET
RKEY6: MOV A,@7
MOV FTIMES,A
JBS FLAG1,FTIME
JMP RKEY6TEMP
DEC STIME ;時間-1,-到0為15,剛好循環
;AND A,@0X0F
;MOV B,A
;MOV A,STIME
;AND A,@0XF0 ;保護高4位
;XOR A,B
;MOV STIME,A
RET
RKEY6TEMP:
MOV A,@7
MOV FTIMES,A
JBS FLAG1,FTEMP
JMP NOABLESET
DEC STEMP ;溫度設定值加1
MOV A,STEMP ;
SUB A,@0
JBS R3,C
RET
MOV A,@80
MOV STEMP,A
RET
RKEY7: ;BC FLAG1,FTIME
;BC FLAG1,FTEMP
JBS FLAG1,FKO
JMP RKEY7OFF
BC FLAG1,FKO ;關
MOV A,@15
MOV STIME,A ;默認,溫度和時間設置
MOV A,@80
MOV STEMP,A
BS P6,JDQ1
BS P6,JDQ2
RET
RKEY7OFF:BS FLAG1,FKO ;開
BS P6,FS ;打開風扇
RET
NOABLESET: BC FLAG,FLED
BC FLAG1,FTIME
BC FLAG1,FTEMP
DKEYRET: BC RKEY,7 ;清楚有按鍵 標志
RET
;==============================================================================================
;初始化程序積存器
;==============================================================================================
INIT: MOV A,@0B00000110 ;1:128:,
CONTW ;預分頻給TCC,內部時鐘觸發,不允許中斷
MOV A,@0X0
IOW P5 ;輸出并清0
CLR P5
MOV A,@0X0 ;輸出并清0
IOW P6
CLR P6
;MOV A,@0X0FF
;IOW IOCB ;關閉內部下拉
;MOV A,@0
;IOW IOCC ;關閉集電極開路
;MOV A,@0XFF
;IOW IOCD ;關上拉
MOV A,@0X0 ;0X80程序調好再使能
IOW IOCE ;使能看門狗,P60為普通I/O口
MOV A,@1
IOW IOCF ;允許TCC中斷
CLR TCC
CLR FTIMES
MOV A,@7
MOV R250MS,A
MOV A,@2
MOV R66MS,A
MOV A,@10
MOV R200MS,A
CLR RNTSTC4
MOV A,@2
MOV R05S,A
MOV A,@120
MOV R1M,A
MOV A,@30
MOV R30M,A
MOV R15S,A
CLR FLAG
clr flag1
MOV A,@15 ;默認時間溫度設置
MOV STEMP,A
MOV A,@80
MOV STEMP,A
ENI
;===================================================================================
;上電開始,初始化LCD,并清除所有顯示單元
;===================================================================================
CLRLCD:
BS 6,CS
BS 6,WR
BS 6,DATA
MOV A,@4
MOV RX,A ;COMMAND MODE
CALL SENDMODE
MOV A,@1
MOV RX,A ;SYS EN
CALL SENDCOMMAND
MOV A,@3
MOV RX,A ;LCD ON
CALL SENDCOMMAND
MOV A,@0X29
MOV RX,A ;BIAS 1/3,4 COMMONS
CALL SENDCOMMAND
MOV A,@5
MOV RX,A
CALL SENDMODE
MOV A,@0X0
MOV RX,A
CALL SENDADDRESS
MOV A,@12
MOV DCNT2,A
MOV A,@D0
MOV R4,A
NEXT1:
MOV A,@0
MOV RX,A
MOV R0,A
INC R4
CALL SENDDATA
DJZ DCNT2
JMP NEXT1
RET
;===============================================================================================
;沒66MS作一次AD轉換,按鍵檢測,10K,NTS輪訊
;===============================================================================================
MAIN_AD: JBS FLAG,F33MS
RET
BC FLAG,F33MS
DJZ R66MS
RET
MOV A,@2
MOV R66MS,A
MOV A,ADID
XOR A,@0
JBS R3,Z
JMP MA10K
MOV A,@1
MOV ADID,A
CALL ADKEY
RET
MA10K: MOV A,ADID
XOR A,@1
JBS R3,Z
JMP MADNTS
MOV A,@2
MOV ADID,A
CALL AD10K
RET
MADNTS: CALL ADNTS
MOV A,@0
MOV ADID,A
RET
;==================================================================================================
;利用AD轉換做按鍵檢測
;==================================================================================================
ADKEY: DISI ;關中斷
MOV A,TCC
MOV RTCC,A
;CLR TCC ;清TCC,應放在充電之前,放在這里起修正作用,
MOV A,@0B00000001 ;設置總允許中斷,內部記數1:4
CONTW
MOV A,@0B00000110
IOW P5 ;P50,3輸出,其他輸入
;nop ;休整TCC,使TCC的高字節剛好是鍵值1~7
;nop
;nop
;nop
;BC P5,KEY
CLR TCC
BS P5,KEY
JBS P5,R10K
JMP $-1
MOV A,TCC
swapa tcc
and a,@0xf
sub a,tcc
;MOV A,TCC
MOV RKEYTC,A
CALL FANGDIAN0
MOV A,@0X14-5 ;80+5>TCC>14-5有按鍵
SUB A,RKEYTC
JBS R3,C
JMP DKEYRET
MOV A,@0X90;7C+7
SUB A,RKEYTC
JBC R3,C
JMP DKEYRET
SWAPA RKEYTC
AND A,@0X0F
MOV B,A
BC R3,C
RLC B ;高位*2
DEC B ;再減去2
DEC B
BS B,0;保證b!=0
DEC RKEYTC
DJZ B
JMP $-2
;MOV A,RKEYTC ;沒必要保護
;SUB A,@0X7F
;JBC R3,C
;JMP DETKEY
;MOV A,@0X7F
;MOV RKEYTC,A
DETKEY: SWAPA RKEYTC
AND A,@0XF
MOV RKEYTC,A;鍵值
jmp readkey
;==================================================================================================
;利用AD轉換做10K標準電阻檢測
;==================================================================================================
AD10K: DISI ;關中斷
MOV A,TCC
MOV RTCC,A
MOV A,@0B00000001 ;設置總允許中斷,內部記數1:4
CONTW
BC P5,2 ;放電
MOV A,@0B11110011
IOW P5 ;P52,3輸出,其他輸入
BC P5,R10K
CLR TCC
BS P5,R10K
JBS P5,NTS
JMP $-1
MOV A,TCC
MOV B,A
CALL FANGDIAN0
MOV A,R10KTC3
MOV R10KTC4,A
MOV A,R10KTC2
MOV R10KTC3,A
MOV A,R10KTC1
MOV R10KTC2,A
MOV A,B
MOV R10KTC1,A
MOV A,RTCC
MOV TCC,A
D10KRET: RET
;==================================================================================================
;利用AD轉換做熱敏電阻檢測
;==================================================================================================
ADNTS: DISI ;關中斷
MOV A,TCC
MOV RTCC,A
MOV A,@0B00000001 ;設置總允許中斷,內部記數1:4
CONTW
MOV A,@0B11110101
IOW P5 ;P51,3輸出,其他輸入
BC P5,NTS
CLR TCC
BS P5,NTS
JBS P5,R10K
JMP $-1
MOV A,TCC ;程序可以測到27K左右,TCC益處
MOV B,A
CALL FANGDIAN0
MOV A,RNTSTC3
MOV RNTSTC4,A
MOV A,RNTSTC2
MOV RNTSTC3,A
MOV A,RNTSTC1
MOV RNTSTC2,A
MOV A,B
MOV RNTSTC1,A
MOV A,RTCC
MOV TCC,A
;==========================================================================================
PROCESS: MOV A,RNTSTC4 ;測試到4個以后就做處理,程序開始要做清零初始化
JBC R3,Z
RET
MOV A,@RNTSTC1
MOV R4,A
CALL AVERAGE
MOV A,R_ADL
MOV DIV1,A
MOV A,@10
MOV DCNT1,A
CLR DIV2
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -