日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
基于51單片機的帶時間顯示和緊急控制的交通燈的設計1
基于51單片機的帶時間顯示和緊急控制的交通燈的設計1
 更新時間:2008-7-27 14:02:02  點擊數(shù):3
【字體: 字體顏色

;特別說明,本程序僅供單片機愛好者自己學習使用,

;不得做為其它商業(yè)用途

;此程序在硬件上調試通
;晶振頻率為11.0592MHZ
;用定時器1延時,外部中斷0接緊急控制
;R0為100MS延時常數(shù),R2為狀態(tài)延時常數(shù)
;8279控制數(shù)碼管顯示時間
;用P1口控制雙色燈
;此程序寫于2007-7-6,作者:徐學軍
Z8279                 EQU                 0FF82H                     ;8279 狀態(tài)/命令口地址
D8279                 EQU                 0FF80H                     ;8279 數(shù)據(jù)口地址
LEDMOD                EQU                 00H                        ;左邊輸入 八位字符顯示
                                         ;外部譯碼鍵掃描方式,雙鍵互鎖
LEDFEQ                EQU                 33H                        ;掃描速率
LEDCLS                EQU                 0C1H                       ;清除顯示 RAM
LEDWR0                EQU                 80H                        ;設定的將要寫入的顯示RAM地址
       
                      ORG                0000H
                      LJMP START
                      ORG                0003H                  ;INT 0 中斷入口地址
                      LJMP INT_0
                      ORG                001BH                    ;T1中斷入口地址
                      LJMP INT_T1
                      ORG                0040H
START:
                      MOV SP,#60H
                      MOV                TMOD,#10H                ;置T1為方式1                        
                      SETB EX0                    ;INT 0 中斷有效
                      SETB IT0
                      SETB EA      
                      MOV                TL1,#00H                 ;延時50mS常數(shù)
                      MOV                TH1,#4cH
                      MOV                R0,#2                   ;延時100mS常數(shù)
                      SETB TR1                      ;啟動T1
                      SETB ET1
                      setb                pt1                   ;必須設置定時器1的中斷優(yōu)先級高于外部中斷0
                       LCALL INIT8279                   ;初始化8279


                      LCALL STATUS0 ;初始狀態(tài)(都是紅燈)
CIRCLE:
                      LCALL STATUS1 ;南北綠燈,東西紅燈
                      LCALL STATUS2 ;南北綠燈閃轉黃燈,東西紅燈
                      LCALL STATUS3 ;南北紅燈,東西綠燈
                      LCALL STATUS4 ;南北紅燈,東西綠燈閃轉黃燈
                      LJMP CIRCLE
INT_0:
                      PUSH PSW                    ;保護現(xiàn)場
                      PUSH 2
                      PUSH 90H  
                      clr                ex0      
                      MOV P1,#0FH                  ;南北,東西都亮紅燈       
                      MOV R2,#100                 ;延時10秒
                      LCALL DELAY_DISPLAY
                      setb                ex0
                      POP 90H                     ;恢復現(xiàn)場       
                      POP 2
                      POP PSW
                      RETI
                INT_T1:
                      PUSH ACC
                      PUSH PSW
                      CLR                TR1
                      MOV                TL1,#00H                 ;延時 50mS 常數(shù)
                      MOV                TH1,#4CH        
                      SETB TR1
                      DJNZ R0,EXIT
                      MOV                R0,#2                   ;延時 100ms常數(shù)
                        DEC R2
                 EXIT:
                      POP                PSW
                      POP                ACC
                      RETI
      
STATUS0:                            ;南北紅燈,東西紅燈       
                      MOV P1,#0FH       
                      MOV R2,#10                  ;延時1秒
                      LCALL DELAY_DISPLAY
                      RET
STATUS1:                            ;南北綠燈,東西紅燈        
                      MOV P1,#96H                  ;南北綠燈,東西紅燈      
                      MOV R2,#200                 ;延時20秒
                      LCALL DELAY_DISPLAY
                      RET
STATUS2:                            ;南北綠燈閃轉黃燈,東西紅燈        
                      MOV R3,#03H                 ;綠燈閃3次
FLASH:
                      MOV P1,#9FH       
                      MOV R2,#03H
                      LCALL DELAY_DISPLAY
                      MOV P1,#96H       
                      MOV R2,#03H
                      LCALL DELAY_DISPLAY
                      DJNZ R3,FLASH
                      MOV P1,#06H                  ;南北黃燈,東西紅燈       
                      MOV R2,#10                  ;延時1秒
                      LCALL DELAY_DISPLAY
                      RET
STATUS3:                            ;南北紅燈,東西綠燈       
                      MOV P1,#69H       
                      MOV R2,#200                 ;延時20秒
                      LCALL DELAY_DISPLAY
                      RET
STATUS4:                            ;南北紅燈,東西綠燈閃轉黃燈       
                      MOV R3,#03H                 ;綠燈閃3次
FLASH1:
                      MOV P1,#6FH        
                      MOV R2,#03H
                      LCALL DELAY_DISPLAY
                      MOV P1,#69H       
                      MOV R2,#03H
                      LCALL DELAY_DISPLAY
                      DJNZ R3,FLASH1
                      MOV P1,#09H                 ;南北紅燈,東西黃燈       
                      MOV R2,#10                 ;延時1秒
                      LCALL DELAY_DISPLAY
                      NOP
                      RET
                   INIT8279:                                ;8279初始化子程序
                      PUSH                DPH                        ;保存現(xiàn)場
                      PUSH                DPL
                      PUSH                ACC
                      LCALL DELAY                      ;延時
                      MOV                 DPTR ,#Z8279
                      MOV                 A,#LEDMOD                  ;置8279工作方式
                      MOVX                @DPTR,A
                      MOV                 A,#LEDFEQ                  ;置鍵盤掃描速率
                      MOVX                @DPTR,A
                      MOV                 A,#LEDCLS                  ;清除 LED 顯示
                      MOVX                @DPTR,A
                      LCALL DELAY                      ;延時
                      POP                 ACC                        ;恢復現(xiàn)場
                      POP                 DPL
                      POP                 DPH
                      RET
                                         ;顯示字符子程序
                                         ;輸入: R4,位置 R5,值
DISLED:
                      PUSH                DPH                        ;保存現(xiàn)場
                      PUSH                DPL
                      PUSH                ACC
                      MOV                 A,#LEDWR0                  ;置顯示起始地址
                      ADD                 A,R4                       ;加位置偏移量
                      MOV                 DPTR,#Z8279
                      MOVX                @DPTR,A                    ;設定顯示位置
                      MOV                 DPTR,#LEDSEG ;置顯示常數(shù)表起始位置
                      MOV                 A,R5
                      MOVC                A,@A+DPTR                  ;查表
                      MOV                 DPTR,#D8279
                      MOVX                @DPTR,A                    ;顯示數(shù)據(jù)
                      POP                 ACC                        ;恢復現(xiàn)場
                      POP                 DPL
                      POP                 DPH
                      RET
DELAY:                                  ;延時子程序
                      PUSH                0                          ;保存現(xiàn)場
                      PUSH                1
                      MOV                 0,#0H
DELAY1:
                      MOV                 1,#0H
                      DJNZ                1,$
                      DJNZ                0,DELAY1
                      POP                 1                          ;恢復現(xiàn)場
                      POP                 0
                      RET
   
DELAY_DISPLAY:                              ;延時和顯示時間子程序       
                      PUSH 1
                      PUSH 0
                      push acc
loopwait: MOV b,#10
                      MOV a,2
                      div ab
                      MOV b,#10
                      div ab
                      MOV                r4,#1
                      MOV                r5,a
                      LCALL DISLED                     ;顯示秒高位
                      MOV                r4,#0
                      MOV                r5,b
                      LCALL DISLED                     ;顯示秒低位
                     MOV a,2
                     jnz                loopwait                     ;延時等待
                      pop                acc  
                      POP 0
                      POP 1       
                      RET
                LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'
                        DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'
                    END

  • 上一篇: RS232技術詳解2
  • 下一篇: 基于單片機的頻率計的設計(C51語言)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1