標(biāo)題:
mk7a11p單片機(jī)的電子壺源程序
[打印本頁(yè)]
作者:
xitaopeng
時(shí)間:
2018-7-8 22:13
標(biāo)題:
mk7a11p單片機(jī)的電子壺源程序
mk7a11p mcu的電子壺源程序 供大家參考
0.png
(44.38 KB, 下載次數(shù): 67)
下載附件
2018-7-9 02:44 上傳
單片機(jī)源程序如下:
#include "mk7a11p.inc" ;編譯該文檔需包含"mk7a11p.inc"文件
;------------------------------------------------------------------
;芯片型號(hào)(mk7a11p)
;------------------------------------------------------------------
;配置寄存器設(shè)置說(shuō)明(CONFIG)
;1-----------FOSC=RC ;LS,NS,HS,RC
;2-----------INRC=ON ;ON,OFF
;3-----------CPT=OFF ;ON,OFF
;4-----------WDTE=Disable ;Enable,Disable
;5-----------LV=Low Vol Reset ON ;Low Vol Reset ON,Low Vol Reset OFF
;6-----------RESET=...input... ;...input...,...reset...
;------------------------------------------------------------------
a_buf equ 0x20 ;acc緩存器
status_buf equ 0x21 ;status緩存器
tm_r equ 0x22 ;1s計(jì)時(shí)
pb_buf equ 0x23 ;端口緩存
del_r0 equ 0x24 ;延時(shí)計(jì)數(shù)
del_r1 equ 0x25 ;延時(shí)計(jì)數(shù)
gs_flag equ 0x26 ;高水位標(biāo)志
cs_flag equ 0x27 ;常水位標(biāo)志
ns_flag equ 0x28 ;濃縮位標(biāo)志
fmq_flag equ 0x29 ;蜂鳴器標(biāo)志位
ct1_flag equ 0x2A ;加熱次數(shù)標(biāo)志
ct2_flag equ 0x2B ;加熱次數(shù)標(biāo)志
ct3_flag equ 0x2C ;加熱次數(shù)標(biāo)志
grcs_flag equ 0x2e ;加熱次數(shù)標(biāo)志
grcs0_flag equ 0x2e ;加熱次數(shù)標(biāo)志
;------------------------------------------------------------------
org 0x3fe ;mk7a11p的中斷向量地址定義
lgoto int ;跳轉(zhuǎn)到中斷程序入口
org 0x3ff ;mk7a11p的復(fù)位向量地址定義
lgoto main ;跳轉(zhuǎn)到主程序入口
;------------------------------------------------------------------
org 0x000
int ;中斷入口地址
;保護(hù)現(xiàn)場(chǎng)
movam a_buf
swap status,a
movam status_buf
;---------------------------------------------------------------
btsc irqf,tm0f ;判斷是不是tmr0溢出中斷
lgoto int_tm0 ;進(jìn)入tmr0中斷服務(wù)程序
;---------------------------------------------------------------
int_end
;中斷結(jié)束要恢復(fù)現(xiàn)場(chǎng)
swap status_buf,a
movam status
swap a_buf,m ;這里不能用"mov a_buf,a"因?yàn)?br />
swap a_buf,a ;"mov a_buf,a"會(huì)影響status
reti
;------------------------------------------------------------------
int_tm0 ;tmr0中斷服務(wù)程序
bc irqf,tm0f ;清除tmr0中斷標(biāo)志
;---------------------------------------------------------------
inc tm_r,m
movla .1 ;4x250=1s
xor tm_r,a
btss status,z ;邏輯結(jié)果操作結(jié)果零標(biāo)記位
lgoto int_end
clr tm_r
;---------------------------------------------------------------
movla b'00100000'
xor portb,m ;PA0的High Low切換
lgoto int_end
;------------------------------------------------------------------
delay
decsz del_r0,m ;延時(shí)消抖
lgoto delay
movla .255
movam del_r0
decsz del_r1,m
lgoto delay
ret ;子程序返回
main ;主程序入口地址定義
;PortA端口方向及狀態(tài)設(shè)定
movla b'11110000'
iodir porta
clr porta
clr pa_pdm
;------------------------------------------------------
;PortB端口方向及狀態(tài)設(shè)定pb2高水位鍵盤(pán)和綠燈控制
movla b'11001001';六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb
clr portb
clr pb_pod ;lou ji kai lu
clr pb_pdm ;gong neng xuan ze
clr pb_pup ;shang la dian zu qi
bs pb_pup, 0
;bs pb_pup, 3
;------------------------------------------------------初始化
movla .0
MOVAM a_buf
movla .0
MOVAM status_buf
movla .0
MOVAM tm_r
movla .0
MOVAM pb_buf
movla .0
MOVAM gs_flag
movla .0
MOVAM cs_flag
movla .0
MOVAM ns_flag
movla .0
MOVAM fmq_flag
movla .0
MOVAM ct1_flag
movla .0
MOVAM ct2_flag
movla .0
MOVAM ct3_flag
movla .0
MOVAM grcs_flag
movla .0
MOVAM grcs0_flag
;bs pb_pup, 3
; movla b'00000001'
; xor portb,m ;PA0的High Low切換
;----------------------------------------------------------
;PortB端口8個(gè)IO喚醒使能
;movla b'11111111'
;movam wake_up
;---------------------------------------------------
;配置TMR0,預(yù)分頻比為1:16
;TMR0初始值為250
movla b'11000011'
select
movla .12
movam tmr0 ;tmr0的溢出時(shí)間是:250x16=4ms
;---------------------------------------------------
;tmr0中斷使能
;inc del_r0,m ;tmr0的溢出時(shí)間是:250x16=4ms
movla .255
movam del_r0
movla .255
movam del_r1
;--------------------------------------延時(shí)一段時(shí)間等待電路穩(wěn)定
lcall delay
lcall delay
lcall delay
; lcall delay
; lcall delay
;--------------------------------------——————第一次讀取按鍵;
duqu1
movla b'11001101' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
mov portb,a ;讀取端口狀態(tài)
movam pb_buf ;保存端口狀態(tài)
COM pb_buf, m ;取反端口狀態(tài)
lgoto qu01_flag ;延時(shí)狀態(tài)
yqu0
movla b'11001101' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
mov portb,a ;二次讀取端口狀態(tài)
AND pb_buf, m
BTSc pb_buf,2 ;測(cè)試pb2 為5零sikp高水位測(cè)試位
lgoto qingchu
BTSc pb_buf,3 ;測(cè)試pb2 為5零sikp高水位測(cè)試位
lgoto qingchu
movam pb_buf ;一次測(cè)試pb0通過(guò) 。
inc grcs0_flag,m
BTSs grcs0_flag,7 ;八次測(cè)試pb0通過(guò) 。
lgoto duqu1
BTSs grcs0_flag,6 ;八次測(cè)試pb0通過(guò) 。
lgoto duqu1
BTSs grcs0_flag,5 ;八次測(cè)試pb0通過(guò) 。
lgoto duqu1
BTSc pb_buf,2
lgoto sns_flag
lgoto sgs_flag
qu01_flag
movla .200
MOVAM fmq_flag
qu011_flag
movla b'11001001' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
bc portb, 2 ;綠色指示燈亮
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
DECSZ fmq_flag, m
lgoto qu011_flag
lgoto yqu0 ;
qingchu
movla .0
MOVAM grcs0_flag
lgoto duqu1
sgs_flag
movla .1
MOVAM gs_flag
lgoto jiare_flag ;只可能一個(gè)鍵被按下檢測(cè)到后直接跳轉(zhuǎn)加熱
sns_flag
BTSc pb_buf,3 ;測(cè)試pb3 為零sikp
lgoto scs_flag
movla .1
MOVAM ns_flag
lgoto jiare_flag ;只可能一個(gè)鍵被按下檢測(cè)到后直接跳轉(zhuǎn)加熱
scs_flag movla .1
MOVAM cs_flag
;----------------------------------------------------------------電路全功率加熱
jiare_flag
bc portb, 4 ;紅色指示燈亮,
movla b'10000001'
movam irqm
clr irqf
;bs portb, 5 ;打開(kāi)蜂鳴器
movla .5
movam del_r1
lcall delay ;蜂鳴器響一聲,
;lcall delay ;蜂鳴器響一聲,
lcall delay ;蜂鳴器響一聲,
lcall delay ;蜂鳴器響一聲,
movla b'00000000'
movam irqm
clr irqf
;bc portb, 5 ;關(guān)閉蜂鳴器
bs portb, 1 ;繼電器打開(kāi)全功率加熱。
bs portb, 0
; bs portb, 0 ;繼電器打開(kāi)全功率加熱。
jiare
mov portb,a ;讀取端口狀態(tài)
movam pb_buf ;保存端口狀態(tài)
btss pb_buf,0 ;測(cè)試pb0
lgoto jiare ;等待溫控器信號(hào)為零時(shí)跳出循環(huán)體
nop
bc portb, 4 ;紅色指示燈亮,
nop
nop
nop
nop
nop
nop
nop
btss pb_buf,0 ;測(cè)試pb0
lgoto jiare ;等待溫控器信號(hào)為零時(shí)跳出循環(huán)體
nop
nop
nop
nop
lcall delay
nop
nop
nop
nop
btss pb_buf,0 ;測(cè)試pb0
lgoto jiare ;等待溫控器信號(hào)為零時(shí)跳出循環(huán)體
nop
nop
nop
nop
nop
nop
nop
nop
btss pb_buf,0 ;測(cè)試pb0
lgoto jiare ;等待溫控器信號(hào)為零時(shí)跳出循環(huán)體
;------------------------------------------------------------加熱完成延時(shí)加熱;
BTSc gs_flag,0 ;為一表示高電平?jīng)]有按鍵,跳過(guò)指令
lgoto wcjiare1 ;高水位加熱后直接完成加熱狀態(tài)
BTSc cs_flag,0
lgoto csjiare_flag ;常水位加熱后延時(shí)2分鐘
BTSc ns_flag,0
lgoto nsjiare1_flag ;濃縮水位加熱后延時(shí)6分鐘
csjiare_flag
movla .121
MOVAM fmq_flag
csjiare1_flag
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
DECSZ fmq_flag, m
LGOTO csjiare1_flag
LGOTO wcjiare1
nsjiare1_flag
movla .180
MOVAM fmq_flag
nsjiare11_flag
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
DECSZ fmq_flag, m
LGOTO nsjiare11_flag
nsjiare2_flag
movla .180
MOVAM fmq_flag
nsjiare22_flag
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
DECSZ fmq_flag, m
LGOTO nsjiare22_flag
wcjiare1
movla b'11001001';六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸出
bs portb, 4 ;紅色指示燈滅,
bc portb, 1 ;關(guān)閉繼電器打開(kāi)全功率加熱。
bs portb, 2 ;綠色指示燈亮
movla .10 ;蜂鳴器響十聲,
MOVAM fmq_flag
sss1_flag
movla b'10000001'
movam irqm
clr irqf
lcall delay
lcall delay
movla b'00000000'
movam irqm
clr irqf
lcall delay
lcall delay
DECSZ fmq_flag, m
LGOTO sss1_flag
bc portb, 5 ;關(guān)蜂鳴器,
;----------------------------------------------------------加熱延時(shí)完成關(guān)閉加熱;
;----------------------------------------------------------加熱完成二次讀取按鍵;
baowen
movla b'11001101' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
mov portb,a ;讀取端口狀態(tài)
movam pb_buf ;保存端口狀態(tài)
COM pb_buf, m ;取反端口狀態(tài)
lgoto qu1_flag ;延時(shí)狀態(tài)
yqu
movla b'11001101' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
mov portb,a ;二次讀取端口狀態(tài)
AND pb_buf, m
BTSc pb_buf,2 ;測(cè)試pb2 為5零sikp高水位測(cè)試位
lgoto qingchu0
BTSc pb_buf,3 ;測(cè)試pb2 為5零sikp高水位測(cè)試位
lgoto qingchu0
movam pb_buf ;一次測(cè)試pb0通過(guò) 。
inc grcs_flag,m
BTSs grcs_flag,7 ;八次測(cè)試pb0通過(guò) 。
lgoto baowen
BTSc pb_buf,2
lgoto sns1_flag
lgoto jiare2
qu1_flag
movla .100
MOVAM fmq_flag
qu11_flag
movla b'11001001' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
bs portb, 2 ;綠色指示燈亮
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
DECSZ fmq_flag, m
lgoto qu11_flag
lgoto yqu ;
qingchu0
movla .0
MOVAM grcs_flag
lgoto baowen
sns1_flag
BTSc pb_buf,3 ;測(cè)試pb3 為零sikp濃縮水位測(cè)試位
lgoto scs1_flag ;不是高水位也不是濃縮水位
BTSc gs_flag,0 ;是濃縮水位,
lgoto sss_flag ;高水位轉(zhuǎn)濃縮水位,轉(zhuǎn)加熱6分鐘
BTSc cs_flag,0 ;是濃縮不是高水位
lgoto loop3 ;常水位轉(zhuǎn)濃縮水位,加熱四分鐘
lgoto jiare2 ;是濃縮水位,不是高水位,也不是常水位轉(zhuǎn)保溫加熱
scs1_flag ;二次讀取為常水位。
BTSc gs_flag,0
lgoto loop ;高水位轉(zhuǎn)常水位 加熱兩分鐘
lgoto jiare2 ;不是高水位轉(zhuǎn)常水位轉(zhuǎn)到保溫加熱。
loop
BTSc ct1_flag,0
lgoto jiare2
inc ct1_flag,m
movla b'11001001' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
bc portb, 2 ;綠色指示燈亮
bc portb, 4 ;紅色指示燈亮,
bs portb, 1 ;繼電器打開(kāi)全功率加熱。
movla .120
MOVAM fmq_flag
nsjiare44_flag ;延時(shí)
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
DECSZ fmq_flag, m
LGOTO nsjiare44_flag
lgoto wcjiare1 ;延時(shí)加熱后轉(zhuǎn)保溫加熱
sss_flag
BTSc ct2_flag,0
lgoto jiare2
BTSc ct1_flag,0
lgoto nsjiare045_flag
inc ct2_flag,m
movla b'11001001' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
bc portb, 2 ;綠色指示燈亮
bc portb, 4 ;紅色指示燈亮,
bs portb, 1 ;繼電器打開(kāi)全功率加熱。
movla .120
MOVAM fmq_flag
nsjiare45_flag ;延時(shí)
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
DECSZ fmq_flag, m
LGOTO nsjiare45_flag
nsjiare045_flag
inc ct2_flag,m
bc portb, 2 ;綠色指示燈滅
bc portb, 4 ;紅色指示燈亮,
bs portb, 1 ;繼電器打開(kāi)全功率加熱。
movla .230
MOVAM fmq_flag
nsjiare46_flag ;延時(shí)
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
DECSZ fmq_flag, m
LGOTO nsjiare46_flag
lgoto wcjiare1 ;延時(shí)六分鐘加熱后轉(zhuǎn)保溫加熱
loop3
BTSc ct3_flag,0
lgoto jiare2
inc ct3_flag,m
movla b'11001001' ;六個(gè)鍵 PB0 PB3設(shè)置為輸入
iodir portb ; pb2 設(shè) 置為輸入
bc portb, 2 ;綠色指示燈亮
bc portb, 4 ;紅色指示燈亮,
bs portb, 1 ;繼電器打開(kāi)全功率加熱。
movla .240
MOVAM fmq_flag
nsjiare47_flag ;延時(shí)
lcall delay
lcall delay
lcall delay
lcall delay
lcall delay
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
14 6A12_dzkwh.rar
(15.45 KB, 下載次數(shù): 6)
2018-7-8 22:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
learned
時(shí)間:
2019-8-31 23:40
沒(méi)有電路圖嗎?大佬
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1