4.4 交通燈控制線路如圖 4-5示
5. 系統軟件設計 5.1 控制器的軟件設計 5.1.1 每秒鐘的設定 延時方法可以有兩種一中是利用MCS-51內部定時器產生溢出中斷來確定1秒的時間,另一種是采用軟件延時的方法。 計數器硬件延時 .a計數器初值計算 定時器工作時必須給計數器送計數器初值,這個值是送到TH和TL中的。他是以加法記數的,并能從全1到全0時自動產生溢出中斷請求。因此,我們可以把計數器記滿為零所需的計數值設定為C和計數初值設定為TC 可得到如下計算通式: TC=M-C 式中,M為計數器模值,該值和計數器工作方式有關。在方式0時M為213 ;在方式1時M的值為216;在方式2和3為28 .b 計算公式 T=(M-TC)T計數 或TC=M-C/T計數 T計數是單片機時鐘周期TCLK的12倍;TC為定時初值 如單片機的主脈沖頻率為TCLK12MHZ ,經過12分頻 方式0 TMAX=213 *1微秒=8.912毫秒 方式1 TMAX=216 *1微秒=65.536毫秒 顯然1秒鐘已經超過了計數器的最大定時間,所以我們只有采用定時器和軟件相結合的辦法才能解決這個問題. 5.1.2 1秒的方法 我們采用在主程序中設定一個初值為20的軟件計數器和使T0定時50毫秒.這樣每當T0到50毫秒時CPU就響應它的溢出中斷請求,進入他的中斷服務子程序。在中斷服務子程序中,CPU先使軟件計數器減1,然后判斷它是否為零。為零表示1秒已到可以返回到輸出時間顯示程序。 相應程序代碼 (1)主程序 定時器需定時50毫秒,故T0工作于方式1。 初值: TC=M-T/ T計數 =216 -50ms/1us=15536=3CBOH ORG 1000H START: MOV TMOD, #01H ; 令T0為定時器方式1 MOV TH0, #3CH ;裝入定時器初值 MOV TL0, #BOH ; MOV IE, #82H ;開T0中斷 SEBT TRO ;啟動T0計數器 MOV RO, #14H ;軟件計數器賦初值 LOOP: SJMP $ ;等待中斷 (2)中斷服務子程序 ORG 00BH AJMP BRT0 ORG 00BH BRT0:DJNZ R0,NEXT AJMP TIME ; 跳轉到時間及信號燈顯示子程序 DJNZ:MOV R0,#14H ;恢復R0值 MOV TH0, #3CH ;重裝入定時器初值 MOV TL0, #BOH ; MOV IE, #82H RET1 END 5.1.3 軟件延時 MCS-51的工作頻率為2-12MHZ,我們選用的8031單片機的工作頻率為6MHZ。機器周期與主頻有關,機器周期是主頻的12倍,所以一個機器周期的時間為12*(1/6M)=2us。我們可以知道具體每條指令的周期數,這樣我們就可以通過指令的執行條數來確定1秒的時間。 具體的延時程序分析: DELAY:MOV R4,#08H 延時1秒子程序 DE2:LCALL DELAY1 DJNZ R4,DE2 RET DELAY1:MOV R6,#0 ;延時125ms 子程序 MOV R5,#0 DE1: DJNZ R5,$ DJNZ R6,DE1 RET MOV RN,#DATA ;字節數數為2 ,機器周期數為1 所以此指令的執行時間為2ms,而DELAY1 為一個雙重循壞 循環次數為256*256=65536 所以延時時間=65536*2=131072us 約為125us 。DELAY R4設置的初值為8 主延時程序循環8次,所以125us*8= 1秒由于單片機的運行速度很快其他的指令執行時間可以忽略不計。 5.2 流程圖如圖5-1所示 圖5-1 交通燈的軟件設計流程圖 5.3 程序源代碼 ORG 0000H A_BIT EQU 20H ;用于存放南北十位數 B_BIT EQU 21H ;用于存放南北十位數 C_BIT EQU 22H ;用于存放東西十位數 D_BIT EQU 23H ;用于存放東西位數 TEMP1 EQU 24H ;用于存放第一二南北狀態要顯示的時間 TEMP2 EQU 25H ;用于存放第一二東西狀態要顯示的時間 TEMP3 EQU 26H ;用于存放第三第四南北狀態要顯示的時間 TEMP4 EQU 27H ;用于存放第三第四南北狀態要顯示的時間
LJMP MAIN ORG 0003H ;外部中斷0入口 LJMP INT0 ;跳轉到外部0中斷 ORG 0013H ;外部中斷1入口 LJMP INT1 ;跳轉到外部1中斷 INT0: MOV A,P1 ;外部0中斷 PUSH ACC MOV A,P2 ;中斷保護 PUSH ACC MOV P1,#0FFH ;清除先前狀態 MOV P2,#0FFH CLR P1.0 CLR P1.4 ;南北通行,東西禁止通行 CLR P1.6 CLR P2.3 JNB P3.2 ,$ ;判斷是否還在中斷狀態 POP ACC MOV P2,A ;返回中斷前狀態 POP ACC MOV P1,ACC RETI ;中斷返回 INT1:MOV A,P1 ;外部1中斷 PUSH ACC ;中斷保護 MOV A,P2 PUSH ACC MOV P1,#0FFH ;清除先前狀態 MOV P2,#0FFH CLR P1.2 CLR P2.1 CLR P1.3 ;東西通行,南北禁止通行 CLR P1.5 JNB P3.3 ,$ ;判斷是否還在中斷狀態 POP ACC MOV P2,A ;返回中斷前狀態 POP ACC MOV P1,A RETI ;中斷返回
首頁 上一頁 1 2 3 下一頁 尾頁 3/3/3
本站部分文章來自網絡,如發現侵犯了您的權益,請聯系指出,本站及時確認刪除 E-mail:349991040@qq.com
論文格式網(www.donglienglish.cn--論文格式網拼音首字母組合)提供其他論文畢業論文格式,論文格式范文,畢業論文范文