導航:首頁 > 編程語言 > 可編程式機械定時器

可編程式機械定時器

發布時間:2024-11-17 04:00:00

① 可編程作息時間控制器程序設計

主程序: 在程序開始時,首先初始化,設置中斷0源允許、總允許為一,兩個定時器的工作模式為一模式,整個程序由P2.6接低電平時啟動,啟動後,進入A段工作。在A短工作中調用顯示子程序,A段工作完時進入B段工作,每段工作時都要調用顯示子程序,,最後一段工作完時,關閉顯示,即對P2送入0FFH
顯示子程序:首先,對定時器賦初值,然後進行拆字,拆字採用除以十進行,除以十後,分別把商和余數送到顯緩單元,再查七段碼,把七段碼送到P1,送字位口到P2口,進行動態顯示,每次顯示一位時延時255個指令周期(即FFH個指令周期),四位顯示完後,再進行多次掃描,保證人眼看不到閃爍,最後判斷設定的工作時間到沒,到了幾跳出顯示子程序。
中斷程序:進入中斷後輸出報警信號,同時顯示器全部顯示0,,最後跳出中斷。
四:程序及其說明:
1.程序:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP BAOJING
ORG 0010H
;初始化程序
MAIN:SETB EA ;設置中斷
SETB EX0
CLR IT0
MOV TMOD,#11H ;設置定時器工作模式
SETB P3.4 ;驅動繼電器
SETB P3.5
SETB P3.6
SETB P3.7
HERE:JB P2.6,HERE ;判斷是否啟動
;進入工作階段
GONGZUO:MOV 41H,#0AH ;工作於A段
MOV R7,#0AH ;A段工作時間
CLR P3.4 ;驅動外部繼電器
LCALL SCAN ;調顯示程序
SETB P3.4 ;關斷外部驅動
MOV 41H,#0BH ;工作於B段
MOV R7,#14H ;B段工作時間
CLR P3.5 ;驅動外部繼電器
LCALL SCAN ;調顯示程序
SETB P3.5 ;關斷外部驅動
MOV 41H,#0CH ;工作於C段
MOV R7,#1EH ;C段工作時間
CLR P3.6 ;驅動外部繼電器
LCALL SCAN ;調顯示程序
SETB P3.6 ;關斷外部驅動
MOV 41H,#0DH ;工作於D段
MOV R7,#28H
CLR P3.7 ;驅動外部繼電器
LCALL SCAN ;調顯示程序
SETB P3.7 ;關斷外部驅動
MOV P2,#0FFH ;關顯示
LJMP HERE ;返回判斷處,確定是否繼續工作
;中斷報警程序
BAOJING: MOV P2.4,#00H ;指示燈亮
Mov P2.5,#00H
MOV TL0,#0E0H ;定時20ms
MOV TH0,#0B1H
SETB TR0 ;啟動定時
LP:MOV P1,#3FH ; 全部顯示為零
MOV P2,#00H
MOV P2.5,#00H ;揚聲器工作
JNB TF0,LP ;查詢定時時間到否
SETB P2.4 ;關指示燈
SETB P2.5 ;關揚聲器
RETI
;顯示子程序
ORG 0F00H
SCAN: MOV 42H,#0EH ;「—」(橫線)的七段碼
MOV R1,#32H ;延時常數
MOV TL1,#0E0H ;定時20ms的常數
MOV TH1,#0B1H
LP1: MOV A,R7 ;拆字程序(採用除法拆字)
MOV B,#10
DIV AB
MOV 43H,A ;送顯緩單元
MOV 44H,B
LP2: MOV R0,#41H ;設置顯緩的初始單元
MOV R4,#0FFH ;延時常數
MOV R5,#0FEH ;送字位口
LP3: MOV A,@R0
MOV P2,#0FFH ;關顯示
MOV DPTR,#TAB ;查七段碼、顯示
MOVC A,@A+DPTR
MOV P1,A
MOV P2,R5
LP4: DJNZ R4,LP4
INC R0 ;修改指針
MOV A,R5 ;改變顯示單元
RL A
MOV R5,A
JB ACC.4,LP3 ;判斷四位是否顯示完
SETB TR1 ;啟動定時器
JNB TF1,LP2 ;判斷定時時間是否到
DJNZ R1,LP2 ;延時一秒是否到
DJNZ R7,LP1 ;判斷設定時間是否到
RET
ORG 10FFH
;七段碼表單
TAB: DB 3FH ,06H,5BH, 4FH, 66H,6DH , 7DH
DB 07H, 7FH,6FH,77H, 7CH,39H, 5EH, 40H
2.說明:
主程序:設整個系統工作有四個階段,分為ABCD段,每段工作時間設為10S、20S、30S、40S,在程序的初始化階段設定定時器的工作模式、中斷允許,程序的運行由單片機的P2.6腳接低電平啟動,進入工作階段,在每個工作階段顯示工作段數和剩餘工作時間。
在A段工作時,把「A」這個字元送達41H顯緩單元,再設定A段的工作時間,送到R7寄存器中,設定對應的輸出腳的工作電平值,然後調顯示子程序,A段工作完畢,關閉對應的驅動輸出腳。
B、C、D段工作均和A段工作相似,只是驅動不同的輸出對象,最後一段工作完後,對P2口賦值高電平,關所有的顯示,最後跳回判斷處,判斷是否繼續工作。
顯示子程序:在顯示子程序中因為每段工作時,均要顯示「—」,所以在開始時把「—」的對應序號(在本程序的七段碼表中對應的序號為0EH)送到顯緩單元,對定時器T1定時20ms進行賦初值,計算初值的公式為:
T1初值=2^n-fosc/12×t
由於定時器工作在1模式,振盪頻率為12MHZ,所以計時器T1的初值為:E0B1(十六進制)
將設定的時間進行拆字,然後送到顯緩單元。拆字採用除法的方式進行,將定時時間送到寄存器A中,然後在B中送常數10,經過相除後在寄存器A中得到高位送到顯緩43H中,在寄存器B中得到低位送到顯緩44H單元中,顯緩單元指針首先指向顯緩首地址,通過變址定址方式查詢對應的七段碼送到P1口(字形口),對P2口送入字位口,每個顯示位顯示後經過延時255指令周期再進入下一步工作。每位顯示完後,修改顯示單元的指針,對指針單元的當前值自加一,然後對字位口進行左移,修改顯示單元,再進行判斷四位是否顯示完,即判斷字位口的第五位是否為1,若為1,則程序轉移,繼續顯示;若為0,則依次執行。四位顯示完後,啟動定時器1,定時20ms,查詢TF1的值,若TF1為0,則在此等待,若TF1為1,則R1自減1並判斷是否為0,若不為0,則轉移到顯示部分,若為0,則順序執行(即判斷1S到否);1S到則R7自減1並判斷R7是否為0,若不為0,轉移到拆字部分,若為0,則跳出調用(即判斷每段工作時間到設定時間沒有)。
中斷程序:若外部出現故障(外部故障用P3.2接低電平表示),P2.4、P2.5接低電平(即輸出報警信號,指示燈亮,揚聲器發出聲音),對定時器定T0時20ms賦初值,計算公式為:
T0初值=2^n-fosc/12×t
由於定時器工作在1模式,振盪頻率為12MHZ,所以計時器T1的初值為:E0B1(十六進制)
對P1口送入「0」的七段碼,P2口送入00,每個顯示單元全部顯示為0,啟動定時器,若定時時間沒有到,則轉到顯示處,繼續讓全部顯示0,,若時間到,則對P2.4、P2.5全部送入高電平,關閉報警提示,中斷返回。
七段碼表單:將要顯示的數碼或字母的七段碼按在日常生活中的默認順序定義在一個表單中,通過把表單的首地址付給DPTR,再把需要顯示的數字或字母的對應序號送到寄存器A中,通過變址定址的方式(即MOVC指令)即可查出對應的七段碼。 希望被採納啊!!好長時間菜找到

閱讀全文

與可編程式機械定時器相關的資料

熱點內容
cf打開伺服器接不上怎麼辦 瀏覽:901
linux下more命令 瀏覽:402
des演算法運算位數 瀏覽:375
珠海建行貸款解壓 瀏覽:635
布穀源碼iOS 瀏覽:66
雲存儲節點伺服器是啥 瀏覽:784
壓縮文件可以用pad解壓么 瀏覽:609
我的世界伺服器如何換 瀏覽:64
程序員要拒絕嗎 瀏覽:124
下期視頻怎麼解壓 瀏覽:383
方法命令函數指令 瀏覽:130
視頻已加密請輸入密碼確認 瀏覽:362
香港中產程序員 瀏覽:917
python適合什麼編譯器 瀏覽:844
雙強力夾文件夾使用方法 瀏覽:330
程序員瑜伽教學 瀏覽:809
python網頁分析工具 瀏覽:689
伺服器如何手動關機 瀏覽:47
火柴盒app什麼都載入不出來 瀏覽:321
為什麼騰訊視頻app不顯示緩存列表 瀏覽:408