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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3387|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)匯編語(yǔ)言里面的一個(gè)循環(huán),有中斷時(shí)退不出循環(huán)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
;功能,串口中斷接收5個(gè)字節(jié)的上位機(jī)數(shù)據(jù),如果底個(gè)字節(jié)是04H就執(zhí)行循環(huán)
TmpData  EQU    01H
AUXR     EQU    08EH


P5   DATA 0C8H
P1M1 DATA 091H
P1M0 DATA 092H
P3M1 DATA 0B1H
P3M0 DATA 0B2H
P5M1 DATA 0C9H
P5M0 DATA 0CAH
T2H  DATA 0D6H
T2L  DATA 0D7H
Busy BIT 20H.0;呼吸模式循環(huán)標(biāo)志


    ORG 0000H
    LJMP MAIN                         ;上電,轉(zhuǎn)向主程序
    ORG 0023H                        ;串行口的中斷入口地址
    LJMP Uart1_Int_Recceive     ;轉(zhuǎn)向中斷服務(wù)程序
    ORG 0100H
;=======主程序開(kāi)始=====================================================================
       MAIN:  LCALL Uart1_Initial     ;串口初始化                 
                 MOV R3,#0                  ;亮度檔位標(biāo)識(shí)清零
       Waitdata: SETB ES                 ;允許串行口中斷
                 SETB EA                     ;CPU開(kāi)中斷
                 MOV R0,#40H            ;存放接受的數(shù)據(jù)首地址---------------------
                 MOV R2,#0                ;存放接受的數(shù)據(jù)長(zhǎng)度---------------------         
;----------單字節(jié)16進(jìn)制數(shù)轉(zhuǎn)為3字節(jié)的ASCII碼-------------------------------           
   Save_UartData:
            LOP:MOV A,TmpData     ;等待新的數(shù)據(jù)
                 CJNE R2,#5,LOP      ;判斷是否收到5個(gè)字節(jié)
                 CLR ES                     ;所有數(shù)據(jù)接收完畢,禁止串行中斷
                 CLR EA               
;------------------------------------------------------------------------
;======根據(jù)語(yǔ)音模塊命令控制對(duì)應(yīng)燈具亮度(命令字放在43H的地址中?==========                          
              MOV A,43H                 ;查看地址43H(接收到的5個(gè)字節(jié)的第四個(gè)字節(jié)內(nèi)容做相應(yīng)的功能判斷,為04H就執(zhí)行LOOP1循環(huán))
              CJNE A,#04H,Waitdata
              setb busy
     LOOP1:;循環(huán)執(zhí)行LOPP1
              jnb Busy,Waitdata;標(biāo)志位位0就退出循環(huán)
              MOV  DPTR,#LED_AC1     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              MOV  DPTR,#LED_AC2     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              MOV  DPTR,#LED_AC3     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              MOV  DPTR,#LED_AC4     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              MOV  DPTR,#LED_AC5     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly500ms
         
              
              MOV  DPTR,#LED_AC5     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              MOV  DPTR,#LED_AC4     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              MOV  DPTR,#LED_AC3     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              MOV  DPTR,#LED_AC2     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              MOV  DPTR,#LED_AC1     ; 調(diào)光3檔
              LCALL SendString        ; UART發(fā)送
              LCALL Dly300ms
              JMP   LOOP1
         RET
;串口初始化-----------------------------------
Uart1_Initial:
         CLR A
         CLR EA
         MOV SP, #3FH
         MOV SCON,#50H  ;8位數(shù)據(jù),可變波特率
         ORL AUXR,#01H  ;串口1選擇定時(shí)器2為波特率發(fā)生器
         ORL AUXR,#04H  ;定時(shí)器2時(shí)鐘為Fosc,即1T
         MOV T2L,#0E0H  ;設(shè)定定時(shí)初值
         MOV T2H,#0FEH  ;設(shè)定定時(shí)初值
        ORL AUXR,#10H  ;啟動(dòng)定時(shí)器2
        SETB ES                 ;允許串行口中斷
        SETB EA                 ;CPU開(kāi)中斷
       RET
;-------串口中斷接收數(shù)據(jù)-------------------------
UART1_Int_Recceive:
                    PUSH ACC
             U1REC1:JBC RI,GetData1 ;是接收中斷,清除此標(biāo)志,轉(zhuǎn)向GetData1接收
                    CLR TI          ;是發(fā)送中斷,清除此標(biāo)志,中斷返回
                    SJMP U1REC1
           GetData1:MOV A,SBUF      ;接收(讀入)數(shù)據(jù)
                    MOV @R0,A       ;存放數(shù)據(jù)到30H開(kāi)頭的RAM-----------
                    MOV TmpData,A
                    INC R0          ;修改數(shù)據(jù)區(qū)指針-------------
                    INC R2          ;是否接收到5個(gè)字節(jié) ,數(shù)據(jù)長(zhǎng)度為5個(gè)字節(jié)
                    MOV FagHX,#00H
                    Clr busy
                    POP ACC                 
                 RETI;中斷返回               
;=====串口發(fā)送字符串信息函數(shù)========================================
      SendString:CLR A
                 MOVC A,@A+DPTR             ; 到TABLE取碼
                 MOV  SBUF,A                ; 載入SBUF發(fā)送
          SCONQ2:JBC  TI,SCONQ3             ; 是否發(fā)送完?
                 SJMP SCONQ2
          SCONQ3:INC  DPTR                  ; 取下一個(gè)碼
                 CJNE A,#0AH,SendString     ; 數(shù)據(jù)塊取碼未完成繼續(xù)取碼  發(fā)送AXXXV  如果發(fā)到0AH則結(jié)束
                 MOV A,FagHX      
              RET
;=========軟件延時(shí)函數(shù)================================================         
      Dly200ms:  Mov    R1,#20            ; 20X10MS=200ms秒延時(shí)子程序
           DL3:  Call   Delay
                    Djnz   R1,DL3
                Ret
   Dly100ms:  Mov    R1,#10            ; 20X10MS=200ms秒延時(shí)子程序
           DL2:  Call   Delay
                    Djnz   R1,DL2
               Ret         
         Delay:MOV R7,#01H                ;誤差 0.000000000000us  3.6864M 10ms
           DL1:MOV R6,#0DEH
           DL0:MOV R5,#28H
                 DJNZ R5,$
                 DJNZ R6,DL0
                 DJNZ R7,DL1
            RET
;====PWM對(duì)應(yīng)亮度的可控硅電壓設(shè)置=============================
LED_OFF:DB 'A020V',0DH,0AH     ;關(guān)機(jī)控制命令
LED_ON:DB 'A030V',0DH,0AH      ;開(kāi)機(jī)默認(rèn)亮度
LED_AC1:DB 'A030V',0DH,0AH     ;第一檔亮度控制
LED_AC2:DB 'A080V',0DH,0AH     ;第二檔亮度控制
LED_AC3:DB 'A100V',0DH,0AH     ;第三檔亮度控制
LED_AC4:DB 'A140V',0DH,0AH     ;第四檔亮度控制
LED_AC5:DB 'A220V',0DH,0AH     ;第五檔亮度控制
LED_Sleep:DB 'A030V',0DH,0AH   ;睡眠模式亮度控制
LED_Warm:DB 'A070V',0DH,0AH    ;溫馨模式亮度控制
LED_Reading:DB 'A190V',0DH,0AH ;閱讀模式亮度控制
LED_Bright:DB 'A220V',0DH,0AH  ;明亮模式亮度控制
LED_Moon:DB 'A040V',0DH,0AH    ;夜燈模式亮度控制

  END

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

使用道具 舉報(bào)

沙發(fā)
ID:421538 發(fā)表于 2018-11-9 09:25 | 只看該作者
現(xiàn)在是如果第4字節(jié)是#04H,可以執(zhí)行LOOP1循環(huán),當(dāng)下次數(shù)據(jù)第4字節(jié)不是#04H時(shí),要退出LOOP1循環(huán),不不知道錯(cuò)在哪里。BUSY是判斷是否執(zhí)行循環(huán)的,為1執(zhí)行LOOP1循環(huán),為0不執(zhí)行LOOP1循環(huán)
回復(fù)

使用道具 舉報(bào)

板凳
ID:401564 發(fā)表于 2018-11-10 00:32 | 只看該作者
從這之后中斷就關(guān)了,BUSY就一直是1,不會(huì)再再有中斷去改變了,所以,就一直在LOOP1這循環(huán)了,檢測(cè)字節(jié)的條件滿(mǎn)足之后,應(yīng)該是要重新打開(kāi)中斷的吧
回復(fù)

使用道具 舉報(bào)

地板
ID:421538 發(fā)表于 2018-11-10 11:54 | 只看該作者
感謝幫助,修改了一下,程序正常運(yùn)行,達(dá)到我的功能
在發(fā)送一幀數(shù)據(jù)前關(guān)閉中斷,發(fā)完一幀數(shù)據(jù)后重新打開(kāi)中斷
;=====串口發(fā)送字符串信息函數(shù)========================================
      SendString:
                 CLR ES                     ; 禁止串行口中斷
                 CLR EA                     ; 禁止CPU中斷
                 CLR A
                 MOVC A,@A+DPTR             ; 到TABLE取碼
                 MOV  SBUF,A                ; 載入SBUF發(fā)送
          SCONQ2:JBC  TI,SCONQ3             ; 是否發(fā)送完?
                 SJMP SCONQ2
          SCONQ3:INC  DPTR                  ; 取下一個(gè)碼
                 CJNE A,#0AH,SendString     ; 數(shù)據(jù)塊取碼未完成繼續(xù)取碼  發(fā)送AXXXV  如果發(fā)到字母V(ACSII碼56H)則結(jié)束
                 SETB ES                    ; 允許串行口中斷
                 SETB EA                    ; CPU開(kāi)中斷
            RET
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 日韩综合在线 | 欧美精品一区二区三区在线播放 | 日韩一级电影免费观看 | 一区二区三区四区不卡视频 | 一级欧美黄色片 | 美女一区 | 国产精品一区二区久久 | 91成人在线视频 | 中文字幕一区二区三区日韩精品 | 亚洲综合在线一区二区 | 国产成人精品在线播放 | 午夜寂寞影院列表 | 韩国主播午夜大尺度福利 | 亚洲天堂中文字幕 | 国产美女久久 | 精品久久久久久久久久久院品网 | 欧美在线网站 | 久久亚洲综合 | 久久精品99久久 | 久久久久久久国产 | 男女污污动态图 | 欧美日韩免费一区二区三区 | 91传媒在线观看 | 成人午夜视频在线观看 | 日韩成人免费在线视频 | 国产精品免费av | 日韩av一区二区在线观看 | 国产一区二区在线播放 | 国产精品91久久久久久 | 一级高清免费毛片 | 51ⅴ精品国产91久久久久久 | 日韩视频a| 国产欧美在线 | 性色av网站 | 欧美综合在线视频 | 中文字幕视频在线观看 | 精品国产一区二区久久 | 在线观看视频一区二区三区 | 精品美女在线观看 | 一区二区三区欧美在线观看 |