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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5615|回復: 6
打印 上一主題 下一主題
收起左側(cè)

關(guān)于c51單片機交通燈匯編程序怎么加一個緊急狀態(tài)按鍵的問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:447275 發(fā)表于 2018-12-30 14:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
能不能在這個交通燈系統(tǒng)里,加上一個緊急狀態(tài)按鍵,使所有紅燈亮。


單片機程序在下面:
         ORG 0000H ;主函數(shù)地址
         LJMP MAIN
         ORG 000BH ;中斷定時器0 地址
         LJMP INTERPUT

         ORG 0030H ;表的首地址
         LJMP TABLE
TABLE:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

MAIN:
         MOV P2, #00H             ;給P2 口賦初值,讓數(shù)碼管剛開始都不亮
         MOV R2, #60              ;給R2 賦60,使東西的數(shù)碼管顯示初值為60
         MOV R3, #40              ;給R3 賦40,使南北的數(shù)碼管顯示初值為40
         MOV P3, #0              ;使人形道的燈初始都不亮
         MOV R5, #0                ;給R5,R6 賦初值0
         MOV R6, #0
         MOV TMOD, #01H              ;定時器0 工作方式1
         MOV TH0, #79                  ;給定時器賦初值
         MOV TL0, #0AEH
         SETB EA                     ;允許總中斷
                 SETB EX0
                 SETB IT0
         SETB ET0             ;開啟定時器0 中斷
         SETB TR0                  ;開啟定時器計時
                  
L2:
       LCALL DISPLAY1                    ;顯示東西數(shù)碼管
       LCALL DISPLAY2               ;顯示南北數(shù)碼管
       LCALL CHOOSE1                ;調(diào)用東西判斷函數(shù)
       LCALL CHOOSE2             ;調(diào)用南北判斷函數(shù)
       SJMP L2                     ;一直循環(huán)




INTERPUT:
            MOV TH0, #22H           ;定時器中斷里重現(xiàn)給定時器0 賦初值
            MOV TL0, #0D8H
            MOV A, R4
            INC R4                  ;定時器中斷一次50MS,中斷一次R4+1
            CJNE A, #20,L3           ; 判斷是不是加到20 了,即定時器定時1S
            MOV R4, #0              ;R4 加到20,則清0
            DEC R3                  ;要是定時1S 到了,則把R2,和R3 的值都減1
            DEC R2
L3:
             RETI                   ;中斷退出




CHOOSE1:                            ;東西判斷函數(shù)
            MOV A, R5                   ;R5是一個標志
           CJNE A, #1, K1               ;判斷R5 是不是等于1,不等于1 跳到K1
           MOV A, R2                ;要是標志位等于1
           CJNE A, #4, K5              ;而且R2 等于4,則開啟黃燈,關(guān)閉車道綠燈
           SETB P3.2
             CLR P3.3
            SJMP K3
  K5:      JNC K3                  ;要是R2 小于4 則閃爍綠燈
           CPL P1.7
           MOV A, R2
           CJNE A, #0, K3               ;判斷R2 是不是等于0,
              INC R5                    ;等于0 則讓標志位+1
             CLR P3.2                  ;清黃燈,開車道的左行綠燈,置人行道紅燈
           SETB P3.0
            MOV R2, #20
          SETB P2.6
           CLR P2.7
           SJMP K3
   K1:        JNC K2                     ;CJNE 這個指令比較好R5 和1 的值,要是R5 大于1,則C=0,反之C=1,這里判斷C 是否等于0,既判斷是否小于1,小于1 執(zhí)行下行, 大于1 則跳轉(zhuǎn)K2
           MOV A, R2
           CJNE A, #60, K7               ;初值狀態(tài)R2 是60,判斷R2 是不是60,60 的話開車道的紅燈,開人行道的綠燈
           SETB P3.1
            SETB P2.7
           CLR P2.6
            SJMP K3                      ;退出
  K7:     CJNE A, #0, K3                 ;要是R2 不等于60,判斷R2 是不是等于0,等于0 則把標志位R5 加1,讓車道綠燈亮,紅燈滅,人行道紅燈亮
          INC R5
          CLR P3.1
           SETB P3.3
          MOV R2, #40                      ;再給數(shù)碼管賦初值
           CLR P2.7
          SETB P2.6
          SJMP K3                          ;退出
  K2:     MOV A, R2                        ;標志位R5 大于1 則跳到這里
          CJNE A, #4, K6                      ;判斷R2 和4 的值, 等于4 則開啟黃燈, 關(guān)閉車道的綠燈,要是不等于是,則跳到K6
           CLR P3.0
            SETB P3.2           SJMP K3
K6:     JNC K3                          ;判斷R2 是不是小于4,小于4 則閃爍黃燈,大于4 則直接退出
          CPL P3.2                       ;取反
         MOV A, R3
          CJNE A, #0, K3                     ;判斷R2 是不是等于0
            MOV R5, #0                         ;等于0 則清標志位,因為我們只設(shè)置了0.1.2 這三個狀態(tài),到2了以后要清0,讓他重新開始循環(huán)
           MOV R2, #60                         ;給R2 賦初值,開車道紅燈,關(guān)車道左行綠燈,開人行道綠燈,關(guān)人行道紅燈
            SETB P3.1
           CLR P3.2
          SETB P2.7
          CLR P2.6
  K3:     RET








CHOOSE2:                       ;南、北判斷函數(shù),程序和東、西判斷一致
              MOV A, R6
               CJNE A, #1, H2
                MOV A, R3
                CJNE A, #4, H6
               SETB P3.6
                CLR P3.4
                SJMP H3
  H6:             JNC H3
                 CPL P3.6
                CJNE A, #0, H3
                 INC R6
                 CLR P3.6
                  SETB P3.5
                MOV R3, #60
                 SETB P2.4
                 CLR P2.5
                 SJMP H3
  H2:           JNC H4
             MOV A, R3
            CJNE A, #40,H7
            SETB P3.7
            SETB P2.5
            CLR P2.4
            SJMP H3
H7:            MOV A, R3
          CJNE A, #4, H5
            SETB P3.6
            CLR P3.7
             SJMP H3
H5:           JNC H3
             CPL P3.6
                CJNE A, #0, H3
                SETB P3.4
           CLR P3.6
           INC R6
              MOV R3, #20
              SETB P2.5
              CLR P2.4
              SJMP H3
H4:
              MOV A, R3
              CJNE A, #0, H3
            SETB P3.7
                  CLR P3.5
               MOV R6, #0
             MOV R3, #40
                SETB P2.5
            CLR P2.4
H3:     RET





DISPLAY1:                            ;顯示東西數(shù)碼管(動態(tài)顯示)
              MOV A, R2 ;將R2 放到A 中
              MOV B, #10
              DIV AB ;將2 位的10 進制數(shù)的十位和個位分開
              MOV DPTR, #TABLE ; 取TABLE 表的首地址給DPTR
              MOVC A, @A+DPTR ;把表的第N 個數(shù)據(jù)給A
              MOV P1, A ;把數(shù)據(jù)送到數(shù)碼管中
              SETB P2.0 ;顯示數(shù)碼管
              LCALL DELAY ;延時
              CLR P2.0 ;把數(shù)碼管暗掉
              MOV A ,B ;把個位給A
              MOVC A, @A+DPTR ;把表的個位個數(shù)給A
              MOV P1, A ;把數(shù)據(jù)送到數(shù)碼管中
              SETB P2.1 ;顯示數(shù)據(jù)
              LCALL DELAY ;延時
              CLR P2.1 ;讓數(shù)碼管暗掉
              RET




DISPLAY2:                             ;顯示南北數(shù)碼管(顯示函數(shù)和上面一樣,這里注釋就不寫了)
              MOV A, R3
              MOV B, #10
             DIV AB
             MOV DPTR, #TABLE
             MOVC A, @A+DPTR
             MOV P0, A
             SETB P2.2
             LCALL DELAY
             CLR P2.2
             MOV A, B
             MOVC A, @A+DPTR
             MOV P0, A
             SETB P2.3
             LCALL DELAY
             CLR P2.3
             RET



DELAY:              ;延時函數(shù)
             MOV R0, #20
L1:              MOV R1, #25
             DJNZ R1, $
             DJNZ R0, L1
             RET
END

圖片1.png (71 KB, 下載次數(shù): 102)

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

使用道具 舉報

沙發(fā)
ID:439075 發(fā)表于 2018-12-30 18:05 | 只看該作者
在標號L2之后,加一段檢測緊急按鈕,未按下則執(zhí)行原有的語句,檢測到按下后全部亮紅燈的代碼,緊急代碼結(jié)束后轉(zhuǎn)到L2。
回復

使用道具 舉報

板凳
ID:447275 發(fā)表于 2018-12-30 19:38 | 只看該作者
bucker 發(fā)表于 2018-12-30 18:05
在標號L2之后,加一段檢測緊急按鈕,未按下則執(zhí)行原有的語句,檢測到按下后全部亮紅燈的代碼,緊急代碼結(jié)束 ...

那按鈕接到哪個I/O口 啊?
回復

使用道具 舉報

地板
ID:447275 發(fā)表于 2018-12-30 19:53 | 只看該作者
bucker 發(fā)表于 2018-12-30 18:05
在標號L2之后,加一段檢測緊急按鈕,未按下則執(zhí)行原有的語句,檢測到按下后全部亮紅燈的代碼,緊急代碼結(jié)束 ...

檢測程序你可以幫我寫一下,讓我看一下不?   我不太懂那個緊急狀態(tài)按鍵接到哪個引腳上去,  仿真上所有引腳都用了,好像沒有地方接按鍵了啊
回復

使用道具 舉報

5#
ID:678072 發(fā)表于 2019-12-31 18:31 | 只看該作者
你好老哥,問題解決了嗎
回復

使用道具 舉報

6#
ID:195446 發(fā)表于 2020-1-1 17:12 | 只看該作者
緊急按鈕采用的中斷方式,所以按鈕接在P3.2,程序里要寫中斷服務(wù)程序:
ORG 0003H ;外部中斷0 地址
LJMP INTERPUT0


INTERPUT0:MOV ........;全部紅燈亮
                   LCALL DELAY
                   LCALL DISPLAY
                  RETI

你的連接把P3.2口占用了,需要調(diào)整空出來。
回復

使用道具 舉報

7#
ID:558309 發(fā)表于 2020-1-1 18:04 | 只看該作者
加一個輸入中斷,當你按鍵按下跳入中斷,中斷執(zhí)行程序讓所有紅燈都亮,同時關(guān)閉綠燈
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 少妇淫片aaaaa毛片叫床爽 | 伊人久久综合 | 亚洲网站在线观看 | 99精品国产一区二区三区 | 久久亚洲经典 | 国产精品日韩欧美一区二区三区 | 久久噜噜噜精品国产亚洲综合 | 中文字字幕一区二区三区四区五区 | 色妹子综合网 | 久草网址 | 亚洲天堂二区 | 99久久婷婷国产综合精品电影 | 成人午夜精品一区二区三区 | 久久久久1| 日韩精品在线观看一区二区 | 亚洲成人网在线播放 | 狠狠av | 在线视频h | 精品欧美一区二区三区久久久 | 99久久99久久精品国产片果冰 | 久久大陆 | 一区二区精品在线 | 在线视频 亚洲 | 美女中文字幕视频 | 精品久久久久国产免费第一页 | 国产成人久久精品一区二区三区 | 91大神在线资源观看无广告 | 欧美日韩在线一区二区 | 久久网一区二区三区 | 精品1区 | 国产精品久久久久久婷婷天堂 | 特一级毛片 | 女生羞羞视频 | 国产精品视频网 | 777zyz色资源站在线观看 | 91精品国产乱码久久久久久久久 | 精品视频在线播放 | 成人影院一区二区三区 | 国产成人精品久久 | 国产成人综合在线 | 亚洲精品一区二区三区在线观看 |