久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2930|回復: 1
打印 上一主題 下一主題
收起左側

mk7a11p單片機的電子壺源程序

[復制鏈接]
跳轉到指定樓層
樓主
mk7a11p mcu的電子壺源程序 供大家參考


單片機源程序如下:
  1. #include  "mk7a11p.inc"  ;編譯該文檔需包含"mk7a11p.inc"文件
  2. ;------------------------------------------------------------------
  3. ;芯片型號(mk7a11p)
  4. ;------------------------------------------------------------------
  5. ;配置寄存器設置說明(CONFIG)
  6. ;1-----------FOSC=RC    ;LS,NS,HS,RC
  7. ;2-----------INRC=ON    ;ON,OFF
  8. ;3-----------CPT=OFF    ;ON,OFF
  9. ;4-----------WDTE=Disable   ;Enable,Disable
  10. ;5-----------LV=Low Vol Reset ON  ;Low Vol Reset ON,Low Vol Reset OFF
  11. ;6-----------RESET=...input...   ;...input...,...reset...
  12. ;------------------------------------------------------------------
  13. a_buf           equ                   0x20                   ;acc緩存器
  14. status_buf          equ                   0x21                   ;status緩存器
  15. tm_r                   equ                   0x22                   ;1s計時
  16. pb_buf          equ                  0x23         ;端口緩存
  17. del_r0               equ                   0x24         ;延時計數
  18. del_r1                equ                  0x25         ;延時計數
  19. gs_flag         equ             0x26        ;高水位標志
  20. cs_flag         equ             0x27        ;常水位標志
  21. ns_flag         equ             0x28        ;濃縮位標志
  22. fmq_flag        equ             0x29        ;蜂鳴器標志位
  23. ct1_flag        equ            0x2A        ;加熱次數標志
  24. ct2_flag        equ            0x2B        ;加熱次數標志
  25. ct3_flag        equ            0x2C        ;加熱次數標志
  26. grcs_flag        equ            0x2e        ;加熱次數標志
  27. grcs0_flag        equ            0x2e        ;加熱次數標志
  28. ;------------------------------------------------------------------
  29.                    org                   0x3fe           ;mk7a11p的中斷向量地址定義
  30.                      lgoto                 int                   ;跳轉到中斷程序入口
  31.                       org                0x3ff           ;mk7a11p的復位向量地址定義
  32.                      lgoto                main                   ;跳轉到主程序入口
  33. ;------------------------------------------------------------------
  34.                     org                   0x000
  35. int                                                 ;中斷入口地址
  36.                                                  ;保護現場
  37.                    movam                  a_buf
  38.                    swap                   status,a
  39.                    movam                  status_buf
  40.                    ;---------------------------------------------------------------
  41.                    btsc                   irqf,tm0f          ;判斷是不是tmr0溢出中斷
  42.                    lgoto           int_tm0          ;進入tmr0中斷服務程序
  43.                    ;---------------------------------------------------------------
  44. int_end
  45.                                                    ;中斷結束要恢復現場
  46.                    swap                   status_buf,a
  47.                    movam                  status
  48.                    swap                   a_buf,m          ;這里不能用"mov a_buf,a"因為
  49.                    swap                   a_buf,a          ;"mov a_buf,a"會影響status
  50.                    reti
  51. ;------------------------------------------------------------------
  52. int_tm0                                                ;tmr0中斷服務程序
  53.                    bc                   irqf,tm0f          ;清除tmr0中斷標志
  54.                    ;---------------------------------------------------------------
  55.                    inc                   tm_r,m
  56.                    movla                  .1                   ;4x250=1s
  57.                    xor                   tm_r,a
  58.                    btss                   status,z        ;邏輯結果操作結果零標記位
  59.                    lgoto           int_end
  60.                    clr                   tm_r
  61.                    ;---------------------------------------------------------------
  62.                    movla                  b'00100000'
  63.                    xor                   portb,m                ;PA0的High Low切換
  64.                    lgoto           int_end
  65. ;------------------------------------------------------------------
  66. delay
  67.                 decsz del_r0,m ;延時消抖
  68.                 lgoto delay
  69.                 movla                  .255
  70.                      movam                  del_r0
  71.                 decsz del_r1,m
  72.                 lgoto delay
  73.                 ret                              ;子程序返回
  74. main                                            ;主程序入口地址定義
  75.                    ;PortA端口方向及狀態設定
  76.                     movla              b'11110000'
  77.                  iodir                 porta
  78.                     clr                   porta
  79.                   clr                  pa_pdm
  80.                     ;------------------------------------------------------
  81.                       ;PortB端口方向及狀態設定pb2高水位鍵盤和綠燈控制
  82.                   movla                b'11001001';六個鍵 PB0 PB3設置為輸入
  83.                     iodir                  portb
  84.                     clr                   portb
  85.                     clr                  pb_pod      ;lou ji kai lu
  86.                    clr                  pb_pdm     ;gong neng xuan ze
  87.                    clr                 pb_pup     ;shang la dian zu qi
  88.                 bs              pb_pup, 0
  89.                 ;bs              pb_pup, 3
  90.                        ;------------------------------------------------------初始化
  91.                 movla                         .0
  92.                 MOVAM            a_buf
  93.                  movla                  .0
  94.                 MOVAM            status_buf
  95.                  movla                  .0
  96.                 MOVAM            tm_r
  97.                  movla                  .0
  98.                 MOVAM            pb_buf
  99.                 movla                         .0
  100.                 MOVAM            gs_flag
  101.                  movla                  .0
  102.                 MOVAM            cs_flag
  103.                  movla                  .0
  104.                 MOVAM            ns_flag
  105.                  movla                  .0
  106.                 MOVAM            fmq_flag
  107.                 movla                         .0
  108.                 MOVAM            ct1_flag
  109.                  movla                  .0
  110.                 MOVAM            ct2_flag
  111.                  movla                  .0
  112.                 MOVAM            ct3_flag
  113.                  movla                  .0
  114.                  MOVAM           grcs_flag
  115.                  movla                  .0
  116.                  MOVAM           grcs0_flag

  117.                  ;bs              pb_pup, 3
  118.               ; movla                  b'00000001'
  119.                  ;        xor                   portb,m                ;PA0的High Low切換
  120.                        ;----------------------------------------------------------
  121.                    ;PortB端口8個IO喚醒使能
  122.                      ;movla          b'11111111'
  123.                     ;movam          wake_up
  124.                       ;---------------------------------------------------
  125.                     ;配置TMR0,預分頻比為1:16
  126.                     ;TMR0初始值為250
  127.                      movla              b'11000011'
  128.                     select
  129.                        movla                  .12
  130.                      movam                  tmr0                   ;tmr0的溢出時間是:250x16=4ms
  131.                       ;---------------------------------------------------
  132.                    ;tmr0中斷使能
  133.                
  134.                      ;inc                   del_r0,m                  ;tmr0的溢出時間是:250x16=4ms
  135.                      movla                  .255
  136.                      movam                  del_r0
  137.                      movla                  .255
  138.                      movam                  del_r1
  139.                   ;--------------------------------------延時一段時間等待電路穩定
  140.                 lcall           delay
  141.                   lcall           delay
  142.                     lcall           delay
  143.    ;                   lcall           delay
  144.    ;                     lcall           delay
  145. ;--------------------------------------——————第一次讀取按鍵;

  146. duqu1
  147.                movla                b'11001101'      ;六個鍵 PB0 PB3設置為輸入
  148.                iodir                  portb            ; pb2 設 置為輸入
  149.                mov                   portb,a           ;讀取端口狀態
  150.                movam                  pb_buf           ;保存端口狀態
  151.                COM              pb_buf, m       ;取反端口狀態
  152.                lgoto            qu01_flag        ;延時狀態
  153. yqu0
  154.                movla                b'11001101'      ;六個鍵 PB0 PB3設置為輸入
  155.                iodir                  portb            ; pb2 設 置為輸入
  156.                mov                   portb,a           ;二次讀取端口狀態
  157.                AND              pb_buf, m
  158.                BTSc                   pb_buf,2        ;測試pb2 為5零sikp高水位測試位
  159.                lgoto            qingchu
  160.                BTSc                   pb_buf,3        ;測試pb2 為5零sikp高水位測試位
  161.                lgoto            qingchu
  162.                movam                  pb_buf          ;一次測試pb0通過 。
  163.                inc              grcs0_flag,m
  164.                BTSs                   grcs0_flag,7     ;八次測試pb0通過 。
  165.                lgoto            duqu1
  166.                BTSs                   grcs0_flag,6     ;八次測試pb0通過 。
  167.                lgoto            duqu1
  168.                BTSs                   grcs0_flag,5     ;八次測試pb0通過 。
  169.                lgoto            duqu1
  170.                BTSc                    pb_buf,2
  171.                lgoto            sns_flag
  172.                lgoto            sgs_flag
  173. qu01_flag
  174.                movla                    .200
  175.                MOVAM            fmq_flag
  176. qu011_flag
  177.                movla                b'11001001'      ;六個鍵 PB0 PB3設置為輸入
  178.                iodir                  portb            ; pb2 設 置為輸入
  179.                bc               portb, 2        ;綠色指示燈亮
  180.                nop
  181.                nop
  182.                nop
  183.                nop
  184.                nop
  185.                nop
  186.                nop
  187.                nop
  188.                nop
  189.                nop
  190.                nop
  191.                nop
  192.                nop
  193.                nop
  194.                nop
  195.                nop
  196.                nop
  197.                nop
  198.                nop
  199.                nop
  200.                DECSZ          fmq_flag, m
  201.                lgoto           qu011_flag
  202.                lgoto            yqu0            ;
  203. qingchu
  204.                movla                  .0
  205.                MOVAM           grcs0_flag
  206.                lgoto            duqu1

  207.               
  208. sgs_flag
  209.                movla                  .1
  210.                MOVAM            gs_flag
  211.                lgoto            jiare_flag      ;只可能一個鍵被按下檢測到后直接跳轉加熱
  212. sns_flag
  213.                BTSc                   pb_buf,3       ;測試pb3 為零sikp
  214.                lgoto            scs_flag
  215.                movla                  .1
  216.                MOVAM            ns_flag
  217.                lgoto            jiare_flag      ;只可能一個鍵被按下檢測到后直接跳轉加熱
  218. scs_flag       movla                  .1
  219.                MOVAM            cs_flag
  220. ;----------------------------------------------------------------電路全功率加熱
  221. jiare_flag
  222.                 bc              portb, 4        ;紅色指示燈亮,
  223.                 movla                  b'10000001'
  224.                movam                  irqm
  225.                clr                 irqf
  226.                 ;bs              portb, 5 ;打開蜂鳴器
  227.                 movla                  .5
  228.                      movam                  del_r1
  229.                 lcall           delay          ;蜂鳴器響一聲,
  230.                 ;lcall           delay          ;蜂鳴器響一聲,
  231.                   lcall           delay          ;蜂鳴器響一聲,
  232.                     lcall           delay          ;蜂鳴器響一聲,
  233.                 movla                  b'00000000'
  234.                movam                  irqm
  235.                clr                 irqf
  236.                 ;bc              portb, 5    ;關閉蜂鳴器
  237.                
  238.                 bs              portb, 1       ;繼電器打開全功率加熱。
  239.                 bs              portb, 0
  240.               ;  bs              portb, 0       ;繼電器打開全功率加熱。
  241.                

  242.                
  243. jiare
  244.                 mov                   portb,a           ;讀取端口狀態
  245.                     movam                  pb_buf           ;保存端口狀態
  246.                 btss                   pb_buf,0        ;測試pb0
  247.                       lgoto           jiare           ;等待溫控器信號為零時跳出循環體
  248.                       nop
  249.                        bc              portb, 4        ;紅色指示燈亮,
  250.                 nop
  251.                 nop
  252.                 nop
  253.                 nop
  254.                 nop
  255.                 nop
  256.                 nop
  257.                 btss                   pb_buf,0        ;測試pb0
  258.                 lgoto           jiare           ;等待溫控器信號為零時跳出循環體
  259.                        nop
  260.                 nop
  261.                 nop
  262.                 nop
  263.                 lcall           delay
  264.                 nop
  265.                 nop
  266.                 nop
  267.                 nop
  268.                 btss                   pb_buf,0        ;測試pb0
  269.                 lgoto           jiare           ;等待溫控器信號為零時跳出循環體
  270.                 nop
  271.                 nop
  272.                 nop
  273.                 nop
  274.                 nop
  275.                 nop
  276.                 nop
  277.                 nop
  278.                 btss                   pb_buf,0        ;測試pb0
  279.                 lgoto           jiare           ;等待溫控器信號為零時跳出循環體


  280. ;------------------------------------------------------------加熱完成延時加熱;

  281.                BTSc                   gs_flag,0            ;為一表示高電平沒有按鍵,跳過指令
  282.                lgoto            wcjiare1              ;高水位加熱后直接完成加熱狀態
  283.                BTSc                   cs_flag,0
  284.                lgoto            csjiare_flag       ;常水位加熱后延時2分鐘
  285.                BTSc                  ns_flag,0
  286.                lgoto            nsjiare1_flag      ;濃縮水位加熱后延時6分鐘
  287. csjiare_flag
  288.                movla                  .121
  289.                MOVAM            fmq_flag
  290. csjiare1_flag
  291.                    lcall           delay
  292.                   lcall           delay
  293.                   lcall           delay
  294.                   lcall           delay
  295.                   lcall           delay
  296.                 DECSZ    fmq_flag, m
  297.                 LGOTO    csjiare1_flag
  298.                 LGOTO    wcjiare1
  299. nsjiare1_flag
  300.                movla                  .180
  301.                MOVAM            fmq_flag
  302. nsjiare11_flag
  303.                 lcall           delay
  304.                   lcall           delay
  305.                     lcall           delay
  306.                       lcall           delay
  307.                        lcall           delay
  308.                 DECSZ    fmq_flag, m
  309.                 LGOTO    nsjiare11_flag
  310. nsjiare2_flag
  311.                movla                  .180
  312.                MOVAM            fmq_flag
  313. nsjiare22_flag
  314.                 lcall           delay
  315.                   lcall           delay
  316.                     lcall           delay
  317.                       lcall           delay
  318.                         lcall           delay
  319.                DECSZ            fmq_flag, m
  320.                LGOTO            nsjiare22_flag
  321. wcjiare1
  322.                movla                b'11001001';六個鍵 PB0 PB3設置為輸入
  323.                iodir                  portb      ; pb2 設 置為輸出
  324.                 bs              portb, 4        ;紅色指示燈滅,
  325.                 bc              portb, 1       ;關閉繼電器打開全功率加熱。
  326.                 bs              portb, 2        ;綠色指示燈亮
  327.                movla                  .10             ;蜂鳴器響十聲,
  328.                MOVAM            fmq_flag
  329. sss1_flag
  330.                movla                  b'10000001'
  331.                movam                  irqm
  332.                clr                 irqf
  333.                lcall           delay
  334.                lcall           delay
  335.                movla                  b'00000000'
  336.                movam                  irqm
  337.                clr                 irqf
  338.                lcall           delay
  339.                lcall           delay
  340.                DECSZ           fmq_flag, m
  341.                LGOTO           sss1_flag
  342.                bc              portb, 5        ;關蜂鳴器,
  343. ;----------------------------------------------------------加熱延時完成關閉加熱;
  344. ;----------------------------------------------------------加熱完成二次讀取按鍵;
  345. baowen
  346.                movla                b'11001101'      ;六個鍵 PB0 PB3設置為輸入
  347.                iodir                  portb            ; pb2 設 置為輸入
  348.                mov                   portb,a           ;讀取端口狀態
  349.                movam                  pb_buf           ;保存端口狀態
  350.                COM              pb_buf, m       ;取反端口狀態
  351.                lgoto            qu1_flag        ;延時狀態
  352. yqu
  353.                movla                b'11001101'      ;六個鍵 PB0 PB3設置為輸入
  354.                iodir                  portb            ; pb2 設 置為輸入
  355.                mov                   portb,a           ;二次讀取端口狀態
  356.                AND              pb_buf, m
  357.                BTSc                   pb_buf,2        ;測試pb2 為5零sikp高水位測試位
  358.                lgoto            qingchu0
  359.                BTSc                   pb_buf,3        ;測試pb2 為5零sikp高水位測試位
  360.                lgoto            qingchu0
  361.                movam                  pb_buf          ;一次測試pb0通過 。
  362.                inc              grcs_flag,m
  363.                BTSs                   grcs_flag,7     ;八次測試pb0通過 。
  364.                lgoto            baowen
  365.                BTSc                   pb_buf,2
  366.                lgoto            sns1_flag
  367.                lgoto            jiare2
  368. qu1_flag
  369.                movla                  .100
  370.                MOVAM            fmq_flag
  371. qu11_flag
  372.                movla                b'11001001'      ;六個鍵 PB0 PB3設置為輸入
  373.                iodir                  portb            ; pb2 設 置為輸入
  374.                bs              portb, 2        ;綠色指示燈亮
  375.                nop
  376.                nop
  377.                nop
  378.                nop
  379.                nop  
  380.                nop   
  381.                nop
  382.                nop
  383.                nop
  384.                nop
  385.                DECSZ          fmq_flag, m
  386.                lgoto           qu11_flag
  387.                lgoto            yqu            ;
  388. qingchu0
  389.                movla                  .0
  390.                MOVAM           grcs_flag
  391.                lgoto            baowen

  392. sns1_flag
  393.                BTSc                   pb_buf,3       ;測試pb3 為零sikp濃縮水位測試位
  394.                lgoto            scs1_flag      ;不是高水位也不是濃縮水位
  395.                BTSc                   gs_flag,0      ;是濃縮水位,
  396.                lgoto            sss_flag       ;高水位轉濃縮水位,轉加熱6分鐘
  397.                BTSc                   cs_flag,0       ;是濃縮不是高水位
  398.                lgoto             loop3       ;常水位轉濃縮水位,加熱四分鐘
  399.                lgoto             jiare2        ;是濃縮水位,不是高水位,也不是常水位轉保溫加熱
  400. scs1_flag                                      ;二次讀取為常水位。
  401.                BTSc                  gs_flag,0
  402.                lgoto            loop           ;高水位轉常水位 加熱兩分鐘
  403.                lgoto            jiare2        ;不是高水位轉常水位轉到保溫加熱。
  404. loop
  405.                 BTSc                  ct1_flag,0
  406.                 lgoto            jiare2
  407.                 inc                   ct1_flag,m
  408.                 movla                b'11001001'      ;六個鍵 PB0 PB3設置為輸入
  409.                iodir                  portb            ; pb2 設 置為輸入
  410.                 bc              portb, 2        ;綠色指示燈亮
  411.                 bc              portb, 4        ;紅色指示燈亮,
  412.                 bs              portb, 1       ;繼電器打開全功率加熱。
  413.                movla                  .120
  414.                MOVAM            fmq_flag
  415. nsjiare44_flag                                ;延時
  416.                  lcall           delay
  417.                   lcall           delay
  418.                     lcall           delay
  419.                       lcall           delay
  420.                         lcall           delay
  421.                 DECSZ          fmq_flag, m
  422.                 LGOTO        nsjiare44_flag
  423.                 lgoto           wcjiare1          ;延時加熱后轉保溫加熱
  424. sss_flag
  425.                 BTSc                  ct2_flag,0
  426.                 lgoto            jiare2
  427.                 BTSc                  ct1_flag,0
  428.                 lgoto         nsjiare045_flag
  429.                 inc                   ct2_flag,m
  430.                 movla                b'11001001'      ;六個鍵 PB0 PB3設置為輸入
  431.                 iodir                  portb            ; pb2 設 置為輸入
  432.                 bc              portb, 2        ;綠色指示燈亮
  433.                 bc              portb, 4        ;紅色指示燈亮,
  434.                 bs              portb, 1       ;繼電器打開全功率加熱。
  435.                movla                  .120
  436.                MOVAM            fmq_flag
  437. nsjiare45_flag                                ;延時
  438.                  lcall           delay
  439.                   lcall           delay
  440.                     lcall           delay
  441.                       lcall           delay
  442.                         lcall           delay
  443.                 DECSZ    fmq_flag, m
  444.                 LGOTO    nsjiare45_flag
  445. nsjiare045_flag
  446.                inc                  ct2_flag,m
  447.                bc             portb, 2        ;綠色指示燈滅
  448.                bc              portb, 4        ;紅色指示燈亮,
  449.                bs              portb, 1       ;繼電器打開全功率加熱。
  450.                 movla                  .230
  451.                 MOVAM            fmq_flag
  452. nsjiare46_flag                                ;延時
  453.                 lcall           delay
  454.                   lcall           delay
  455.                     lcall           delay
  456.                       lcall           delay
  457.                        lcall           delay
  458.                 DECSZ    fmq_flag, m
  459.                 LGOTO    nsjiare46_flag
  460.                 lgoto            wcjiare1         ;延時六分鐘加熱后轉保溫加熱
  461. loop3
  462.                BTSc                  ct3_flag,0
  463.                lgoto            jiare2
  464.                inc                   ct3_flag,m
  465.                 movla                b'11001001'      ;六個鍵 PB0 PB3設置為輸入
  466.                iodir                  portb            ; pb2 設 置為輸入
  467.                 bc              portb, 2        ;綠色指示燈亮
  468.                bc              portb, 4        ;紅色指示燈亮,
  469.                bs              portb, 1       ;繼電器打開全功率加熱。
  470.                 movla                  .240
  471.                 MOVAM            fmq_flag
  472. nsjiare47_flag                                ;延時
  473.                  lcall           delay
  474.                  lcall           delay
  475.                     lcall           delay
  476.                       lcall           delay
  477.                         lcall           delay
  478. ……………………

  479. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
14 6A12_dzkwh.rar (15.45 KB, 下載次數: 6)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:415435 發表于 2019-8-31 23:40 | 只看該作者
沒有電路圖嗎?大佬
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美一区二区三区精品久久 | 久久久久久久久久久国产 | 色婷婷精品久久二区二区蜜臂av | 亚洲九色 | 免费色网址 | 毛片com| 一区二区精品视频 | 激情国产视频 | 国产美女福利在线观看 | 国产精品网址 | 中文字幕在线视频观看 | 久草免费在线视频 | 伊人久久成人 | 国产a一区二区 | 这里精品| 久久精品国产亚洲 | 美女黄频 | 91精品国产91久久久久游泳池 | 日韩国产欧美 | 韩国毛片一区二区三区 | 四虎影院久久 | 国产免费视频 | 精品国产91乱码一区二区三区 | 日韩欧美一区二区三区免费看 | 欧美综合视频在线 | 狠狠操电影 | 日韩成人国产 | 天天人人精品 | 五月免费视频 | 日韩免费福利视频 | 国产高清免费在线 | av影音资源 | 国产成人99久久亚洲综合精品 | 91视视频在线观看入口直接观看 | 色毛片 | 免费看黄视频网站 | 欧美激情免费在线 | 欧美影院 | 精品国产乱码久久久久久88av | 国产日韩中文字幕 | 精品亚洲一区二区三区四区五区高 |