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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機匯編語言實現4中方式流水燈不能隨著開關的變化而變化

[復制鏈接]
跳轉到指定樓層
樓主
ID:777603 發(fā)表于 2020-12-6 23:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我的流水方式不能隨著開關的變化而變化,剛剛學。以下是我寫的代碼:怎么修改我的代碼讓它能隨開關的變化而變化。
ORG        0000H
LJMP        MAIN
ORG     0030H
        MAIN:        SETB         P1.2
                        SETB         P1.1
                        JB        P1.1 ,NEXT
                        JB        P1.2,NEXT1
                        AJMP        LOOP4
                NEXT1:AJMP        LOOP2
                NEXT:JB        P1.2,NEXT2
                AJMP        LOOP3
                NEXT2:AJMP        LOOP1                //開關的狀態(tài)對應流水彩燈的方式

                DL1:MOV R3,#20
                L1:        MOV        R1,#20
                L2:        MOV        R2,#250
                        DJNZ   R2,$
                       DJNZ   R1,L2
                       DJNZ   R3,L1               
                        RET                                        //延時0.2s

        DL2:MOV R4,#30
                L3:        MOV        R5,#20
                L4:        MOV        R6,#250
                        DJNZ   R6,$
                DJNZ   R5,L4
                DJNZ   R4,L3              
                        RET                                        //延時0.3s

        DL3:MOV R3,#40
                L5:        MOV        R1,#20
                L6:        MOV        R2,#250
                        DJNZ   R2,$
                DJNZ   R1,L6
                DJNZ   R3,L5               
                        RET                                        //延時0.4s

                LOOP1:MOV A,#10000000B
                          MOV R7,#08H
           START1:MOV P3,A
                          LCALL DL1
                          DJNZ R7,N1
                          AJMP LOOP1
                   N1:RR A
                          AJMP START1                //方式1

                LOOP2:MOV R0,#07H
                          MOV R7,#10000000B
                          MOV A,#10000000B
           START2:MOV P3,A
                          LCALL DL2
                          DJNZ R0,N2
                          MOV P3,#00H
                          AJMP LOOP2
                   N2:RR A
                          ORL A,R7
                          MOV R7,A
                          AJMP START2                //方式2

                LOOP3:MOV P3,#0FFH
                          LCALL DL3
                          MOV P3,#01111110B
                          LCALL DL3
                          MOV P3,#00111100B
                          LCALL DL3
                          MOV P3,#00011000B
                          LCALL DL3
                          MOV P3,#00H
              LCALL DL3
                          AJMP LOOP3                //方式3

                LOOP4:MOV P3,#00H
LCALL DL3
                          MOV A,#01H
                          MOV R7,#08H
        START3:          MOV P3,A
                          LCALL DL3
                          DJNZ R7,N3
                          MOV R7,#07H
          N4:          RR A
                          MOV P3,A
                          LCALL DL3
                          DJNZ R7,N4
              AJMP   LOOP4
          N3:          RL A
                          AJMP START3
                           END                                //方式4

l流水燈要求.PNG (126.23 KB, 下載次數: 81)

l流水燈要求.PNG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:401564 發(fā)表于 2020-12-8 08:23 | 只看該作者
第一:電路呢?
第二:單片機型號呢?
第三:這是仿真還是開發(fā)板的結果?
建議:在KEIL環(huán)境下,不用區(qū)分"JMP"和"AJMP",全部用JMP,CALL就可以了,編譯器會自動識別的
每個子程序之間用;==============================隔開,這樣就更能清楚的顯示你的程序走向,不然別人看不明白的,匯編用的人少

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:777603 發(fā)表于 2020-12-8 11:11 | 只看該作者
Y_G_G 發(fā)表于 2020-12-8 08:23
第一:電路呢?
第二:單片機型號呢?
第三:這是仿真還是開發(fā)板的結果?

學校里的實驗,開發(fā)板,可以仿真,也可以去實驗室下到硬件里驗證。好,謝謝
回復

使用道具 舉報

地板
ID:517466 發(fā)表于 2020-12-8 12:27 | 只看該作者
你的程序邏輯,有風格,哈哈哈。一把的邏輯,不是在主程序里建立循環(huán),在循環(huán)里,根據開關的狀態(tài)值,來決定調用哪個顯示處理嗎?假設P1采樣開關值,P2口顯示流水燈, "0"亮, “1”滅

MAIN:              MOV   A, P1
                      JNZ     MODE1               ;開關狀態(tài)是0嗎?
                      LCALL  DISP_MODE0      ;是0,  按照方式0顯示
                      LJMP   MAIN

MODE1:        XRL    A, #1                 ;開關狀態(tài)是1嗎?
                     JNZ    MODE2               
                     LCALL  DISP_MODE1      ;是1,  按照方式1顯示
                     LJMP   MAIN

MODE2:       MOV   A, P1  
                     XRL    A, #2                 ;開關狀態(tài)是2嗎?
                     JNZ    MODE3               
                     LCALL  DISP_MODE3      ;是2,  按照方式2顯示
                     LJMP   MAIN

MODE3:       MOV   A, P1
                     XRL    A, #3                 ;開關狀態(tài)是3嗎?
                     JNZ    MAIN               
                     LCALL  DISP_MODE3      ;是3,  按照方式3顯示

                     LJMP   MAIN

DIMSP_MODE0: 按照方式0顯示流水燈,每次只亮一個,從Bit0->Bit7
                   MOV  A, #0FEH
                   MOV  P2, A                         ;點亮P20對應的燈
                   LCALL  DELAY500MS

                  MOV  R7, 7
MODE0_LOOP:
                   SETB   C
                   RLC   A                     ;帶進位1做循環(huán),使0依次從Bit0->Bit7
                  MOV  P2, A                ;輸出到P2口,點亮“0”對應的Bit口位
                  LCALL  DELAY500MS  ;延遲顯示一段時間
                  DJNZ   R7, MODE0_LOOP    ;是否已經完成所有循環(huán)
                    RET

DIMSP_MODE1: 按照方式1顯示流水燈,逐個點亮所有LED
                  ;0FFH + 進位標志C=0, RLC A,保證P2從0FEH,0FCH,0F8H, ... 到00H
                 ;一次是P2的Bit0到Bit7全部輸出0,從而逐個點亮所有LED
                  ...
                    RET
DIMSP_MODE2: 按照方式2顯示流水燈
                   ...
                    RET

DIMSP_MODE3: 按照方式3顯示流水燈
                   ...
                    RET

DELAY500MS:
               ;循環(huán)R6,R5,R4等,保證實現接近500ms
               ...
               RET

具體顯示,我只寫了處理邏輯,具體代碼,需要你自己發(fā)揮了。
還有一個比較簡單的處理方式,你預先把要顯示的模式中,對應P2的變化值,寫到一個數組中,然后在
顯示處理中,循環(huán)取得這些值并輸出到P2口。

;利用MOVC A,@A+DPTR指令,從預設的顯示數據區(qū)取得輸出數據
;方式0顯示流水燈,每次只亮一個,從Bit0->Bit7
TAB_MODE0:  DB 11111110B, 11111101B, 11111011B,  11110111B,
                          11101111B, 11011111B, 10111111B, 01111111B
;依次全部點亮
TAB_MODE1:  DB 11111110B, 11111100B, 11111000B, 11110000B,
                           11100000B, 11000000B, 10000000B,00000000B
;先全亮,從外向中間轉移滅燈
TAB_MODE2: DB  00000000B,  10000001B , 11000011B, 11100111B,  11111111B

為了更直觀,數據區(qū)的定義,我都是用2進制表示的數據。0對應亮,1對應滅
自定義顯示流水燈,你可以在內存開辟一段區(qū)域,運行時動態(tài)指定這些區(qū)域的數據,然后利用循環(huán),把這數據依次輸出到P2口,就完成了自定義顯示模式。
   

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩视频网站 | 中文字幕乱码亚洲精品一区 | 四虎影院免费在线播放 | 欧美成视频 | 久久久蜜桃 | 少妇无套高潮一二三区 | 国产精品久久国产精品 | 综合久久av | 精品久久久久久久久久久久久久久久久 | 国产精品99久久久久久宅男 | 成人不卡视频 | 成人在线一级片 | 日韩中文字幕在线观看视频 | 成人国产精品久久 | 你懂的国产 | 欧美日韩综合 | 亚洲一区日韩 | 国产日韩精品久久 | 一级做a爰片性色毛片16 | 久久国| 精品国产乱码久久久久久影片 | 国产一区 | 最新国产视频 | 韩日精品在线观看 | 国产精品日本一区二区不卡视频 | 午夜久久久 | 五月天天丁香婷婷在线中 | 欧美影院久久 | 亚洲国产精品一区二区久久 | 国产成人综合网 | 亚洲人免费视频 | 日本视频中文字幕 | 精品欧美一区二区三区 | 国产精品一区二区三区四区 | 一区二区三区四区电影 | 一区二区三区四区在线视频 | 秋霞影院一区二区 | 日韩中文一区二区三区 | 亚洲精品久久国产高清情趣图文 | 久久99久久98精品免观看软件 | 成人免费淫片aa视频免费 |