交通燈控制系統(tǒng)軟件源程序文本_第1頁(yè)
交通燈控制系統(tǒng)軟件源程序文本_第2頁(yè)
交通燈控制系統(tǒng)軟件源程序文本_第3頁(yè)
交通燈控制系統(tǒng)軟件源程序文本_第4頁(yè)
交通燈控制系統(tǒng)軟件源程序文本_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1共1共16頁(yè),第頁(yè)時(shí)鐘和交通燈掌握系統(tǒng)軟件設(shè)計(jì)——技術(shù)文件〔源程序文本〕;▲設(shè)計(jì)思路:硬件設(shè)計(jì)原理見原理圖,設(shè)計(jì)思路略;系統(tǒng)軟件設(shè)計(jì)思路如下。;分三個(gè)獨(dú)立模塊,主程序依次循環(huán)調(diào)用三個(gè)模塊(顯示模塊、時(shí)間計(jì)算模塊、鍵盤掃描與時(shí)間設(shè)置模塊),;使用兩個(gè)中斷(內(nèi)部定時(shí)器T0INT1),在主程序循環(huán)調(diào)用三個(gè)模塊的進(jìn)程中嵌套調(diào)用各中斷效勞程序。;各模塊之間通過(guò)相應(yīng)的掌握變量來(lái)建立聯(lián)系,并確定分支運(yùn)行的路徑,掌握變量全部由地址傳值;51H~54H、;76H~79H7CH~7FH〕由同一個(gè)地址傳值。0.05s,(216-X)*10-6=0.05,X=15536(3CB0H222〔相當(dāng)于定19〕15536+19=15555〔3CC3H〕。;#程序開頭段,主程序和中斷效勞程序地址初始化RESET:ORG 0000H ;系統(tǒng)復(fù)位后,程序開頭執(zhí)行地址〔主程序起始地址〕LJMPMAINORG 000BH ;T0LJMPT00ORG 0013H ;INT1LJMPINT11;#主程序段ORG100HMAIN: MOVPSW,#00H 認(rèn)工作存放器區(qū)0,此步可以不作〔系統(tǒng)復(fù)位后自動(dòng)清0〕MOVR1,#7EH ;內(nèi)部RAM單元個(gè)數(shù),不含0區(qū)的R0和R1以及SFRMOVR0,#02H ;從0區(qū)的R3開頭清0CLRAM:INCR0 ;清零內(nèi)部RAMMOV@R0,#00HDJNZR1,CLRAMMOVSP,#10H012MOVTMOD,#01H;定時(shí)器T0INT0(11,16MOVTL0,#0C3H;定時(shí)器/812MHzMOVTH0,#3CH8MOVSCON,#00H0〔移位存放器方式〕,0MOV7FH,#0D0H;時(shí)鐘顯示初始值:12:00,7FH字節(jié)單元存放LED10(分鐘個(gè)位),P1〔11010000,段選碼和掌握位選〕MOV7EH,#0E0H;7EHLED20〔分鐘“十位”〕,P1〔11100000,段選碼和掌握位選〕MOV7DH,#0C2H;7DHLED32〔小時(shí)“個(gè)位”〕,P1〔11000010,段選碼和掌握位選〕MOV7CH,#0C1H;7CHLED41〔小時(shí)“十位”〕,P1〔11000001,段選碼和掌握位選〕MOV50H,#00H;50HMOV7BH,#02H;7BHLED3,RXD〔00000010,交通燈不亮〕MOV7AH,#01H;7AHLED4,RXD〔00000001,交通燈不亮〕MOV79H,#0C6H;79H112)時(shí)間LED46,P1(11000110,段選碼),值變化MOV78H,#0C0H;78H112)時(shí)間LED30,P1(11000000,段選碼),值變化時(shí)鐘和交通燈掌握系統(tǒng)軟件設(shè)計(jì)——技術(shù)文件〔源程序文本〕時(shí)鐘和交通燈掌握系統(tǒng)軟件設(shè)計(jì)——技術(shù)文件〔源程序文本〕10共10共16頁(yè),第頁(yè)MOV77H,#0E6H;77H221)時(shí)間LED26,P1(11100110,段選碼和掌握碼),值變化MOV76H,#0D0H;76H221)時(shí)間LED10,P1(11010000,段選碼和掌握碼),值變花MOV75H,#32H;75H112),LED3,RXD(00110010,MOV74H,#31H;74H112),LED4,RXD(00110001,MOV73H,#05H1(21”閃(4),紅綠燈息,LED4,RXD(00000101),MOV72H,#06H1(21”閃(4),紅綠燈息,LED3,RXD(00000110),MOV51H,78H1”(LED3)初值,不變化MOV52H,79H1”(LED4)初值,不變化MOV53H,76H2”(LED1)初值,不變化MOV54H,77H2”(LED2)初值,不變化MOV71H,#8AH;71H221),RXD(LED3:10001010,8AH,LED4:10001001,89H)MOV70H,#42H2(22“閃(4),紅綠燈息,RXD(LED3:01000010)MOV60H,#41H2(22“閃(4),紅綠燈息,RXD(LED4:01000001),MOV6FH,#00H0010.5MOV6EH,#00H;記錄定時(shí)器中斷的次數(shù),掌握交通燈“黃”燈閃耀CLR0AH;K2:0AH=0(工作于時(shí)鐘模式,默認(rèn)),0AH=1(工作于交通燈掌握模式)CLR0BH;哪組交通燈顯示掌握參數(shù):0BH=01,0BH=12CLR0CH;交通燈“黃”燈是否“閃”:0CH=0(不閃),0CH=1(閃)CLR0DH;檢驗(yàn)定時(shí)器是否中斷,0DH=1(中斷),0DH=00CLR0EH;交通燈時(shí)間計(jì)算中間掌握變量CLR0FH12HCLR10H;方向鍵K4,掌握參量:10H=01/按一次數(shù)據(jù)鍵),10H=1(數(shù)據(jù)增大)CLR11H;K4/正常工作模式切換,11H=0(正常工作模式),11H=1(時(shí)間設(shè)置模式)CLR12H;K2,12H=111HCLR13H1,2,13H=01),13H=12CLR14H;時(shí)鐘時(shí)間設(shè)置位掌握,14H=0〔小時(shí)十位〕,14H=1〔小時(shí)個(gè)位〕CLR15H;時(shí)鐘時(shí)間設(shè)置位掌握,15H=0〔分鐘十位〕,15H=1〔分鐘個(gè)位〕CLR16H;時(shí)鐘時(shí)間設(shè)置位掌握,16H=0〔設(shè)置小時(shí)〕,16H=1〔設(shè)置分鐘〕CLR17H;4,17H=1,表示設(shè)置四位時(shí)間完畢MOVR2,#00H;R2MOVR3,#01H;R3,R3=1〔顯示〕,R3=0〔不顯示〕MOVR4,#00H;R4MOVR5,#00H;R5MOVR6,#00H;R6用于暫存交通燈時(shí)間設(shè)置過(guò)程中變化的數(shù)據(jù),中間變量MOVR7,#00H;定時(shí)中斷用中間變量MOVA,#00H;清AMOVSBUF,A0SETBEA ;EA=1,CPUSETBET0 ;ET0=1,允許定時(shí)器/計(jì)數(shù)器溢出中斷SETBEX1 外部中斷1中斷SETBP3.2 ;清“:”閃耀SETBTR0 ;TR0=1,允許T0PROC0: LCALLKEYS 鍵盤掃描子程序LCALLTIME 時(shí)間計(jì)算子程序LCALLDISP ;顯示子程序AJMPPROC0;#鍵盤掃描與時(shí)間設(shè)置模塊;4個(gè)鍵主要完成:①功能轉(zhuǎn)換,②時(shí)間設(shè)置,③系統(tǒng)復(fù)位〔不需要軟件干預(yù)〕;K1—系統(tǒng)復(fù)位鍵〔RESET〕;;K2—①時(shí)鐘模式/交通燈模式切換,在非設(shè)置狀況下有效;②時(shí)間設(shè)置過(guò)程中作為某位時(shí)間設(shè)置的完畢標(biāo)志〔*INT1,回車〕;;K3—調(diào)整顯示數(shù)據(jù)按鍵〔P1.6〕;;K4—①正常工作時(shí)作為進(jìn)入時(shí)間設(shè)置模式的按鍵,②設(shè)置過(guò)程中作為數(shù)據(jù)調(diào)整方向鍵〔P1.7〕;12K3、K4;下段程序?yàn)檫M(jìn)入時(shí)間設(shè)置模式、轉(zhuǎn)變數(shù)據(jù)變化方向KEYS: JNBP1.7,KEYS0;P1.7=0〔按了K4〕,轉(zhuǎn)移,推斷工作模式或數(shù)據(jù)方向;否則〔沒按K4〕,操作如下LJMPKEYS000 ;沒按K4(11H=1)”KEYS0: LCALLDELAY ;延時(shí),消退抖動(dòng)JNBP1.7,KEYS02;P1.7=0〔確是按了K4〕,轉(zhuǎn)移,推斷工作模式或數(shù)據(jù)方向;否則〔沒按K4〕,操作如下KEYS000:JB11H,KEYS1 ;沒按K4(11H=1)”,轉(zhuǎn)移;否則,不作任何操作〔如下〕LJMPKEYSO ;不作任何操作KEYS02:JBP1.7,KEYS03LCALLDELAYAJMPKEYS02KEYS03:SETBP3.2 ;清“:”閃耀SETBP1.7 ;清出P1.7JB11H,KEYS00 ;11H=1,轉(zhuǎn)移〔調(diào)整數(shù)據(jù)方向〕;11H=0,置時(shí)間設(shè)置模式,操作如下SETB11H ;置時(shí)間設(shè)置模式CLR0BH LJMPKEYS1KEYS00:JB10H,KEYS01 掌握參量為1,轉(zhuǎn)移到清0;SETB10H ;原方向掌握參量為0,置1LJMPKEYS1KEYS01:CLR10H 10;時(shí)間設(shè)置KEYS1: JNBP1.6,KEYS100;P1.6=0,有數(shù)值調(diào)整鍵(K3)輸入,轉(zhuǎn)移到KEYS100;否則,不進(jìn)展任何操作LJMPKEYSO ;不進(jìn)展任何操作KEYS100:LCALLDELAY ;延時(shí),消退抖動(dòng)JNBP1.6,KEYS10;P1.6=0〔確是按了K3〕,轉(zhuǎn)移〔進(jìn)展時(shí)間調(diào)整〕;否則,不進(jìn)展任何操作〔如下〕LJMPKEYSOKEYS10:JBP1.6,KEYS04LCALLDELAYAJMPKEYS10KEYS04:SETBP1.6 ;清出P1.6JB0AH,KEYSA ;推斷是哪種工作模式,0AH=1(交通燈,轉(zhuǎn)移到KEYS1A),0AH=0(時(shí)鐘,進(jìn)展如下操作)LJMPKEYSB ;時(shí)鐘時(shí)間設(shè)置開頭KEYSA: LJMPKEYS1A ;交通燈時(shí)間設(shè)置KEYSB:JB16H,KEYS20 ;小時(shí)/分鐘推斷,16H=1〔分鐘,轉(zhuǎn)移〕,16H=0〔小時(shí)設(shè)置,進(jìn)展如下操作〕MOVPSW,#00H 0JB14H,KEYS40 ;14H=1,轉(zhuǎn)移,設(shè)置小時(shí)的個(gè)位;否則設(shè)置小時(shí)的十位〔如下〕JB12H,KEYS40 ;12H=0,沒有回車(不作設(shè)置位的調(diào)整,操作如下);12H=1,有回車,進(jìn)展設(shè)置位調(diào)整MOVA,#00H ;清AMOVR6,#00H ;清R6MOVB,#00H ;清BMOVA,7CH ;取出小時(shí)“十位”數(shù)據(jù)MOVB,A ;原始數(shù)據(jù)暫存于BANLA,#0FH ;屏蔽掉高四位MOVR6,A ;R6LCALLKSETBITMOV7CH,R6 ;回存小時(shí)“十位”數(shù)據(jù)CLR12H ;清“回車”掌握位LJMPKEYSO ;返回KEYS40:SETB14H ;置掌握參量,使轉(zhuǎn)移到設(shè)小時(shí)個(gè)位;JNB0FH,KEYS41CLR0FHJB12H,KEYS20 ;12H=0,沒有回車(不作設(shè)置位的調(diào)整,操作如下);12H=1,有回車,進(jìn)展設(shè)置位調(diào)整KEYS41:MOVA,#00H ;清AMOVR6,#00H ;清R6MOVB,#00H ;清BMOVA,7DH ;取出小時(shí)“個(gè)位”數(shù)據(jù)MOVB,A ;原始數(shù)據(jù)暫存于BANLA,#0FH ;屏蔽掉高四位MOVR6,A ;R6LCALLKSETBITMOV7DH,R6 ;回存小時(shí)“個(gè)位”數(shù)據(jù)CLR12H ;清“回車”掌握位SETB0FHLJMPKEYSO ;返回KEYS20:SETB16H ;分鐘設(shè)置,置掌握參量,使轉(zhuǎn)移到設(shè)分鐘;MOVPSW,#00H 0JB15H,KEYS50JNB0FH,KEYS51CLR0FHJB12H,KEYS50KEYS51:MOVA,#00HMOVR6,#00HMOVB,#00HMOVA,7EHMOVB,AANLA,#0FHMOVR6,ALCALLKSETBITMOV7EH,R6CLR12HSETB0FHLJMPKEYSOKEYS50:SETB15HJNB0FH,KEYS54CLR0FHJB12H,KEYS55KEYS54:MOVA,#00HMOVR6,#00HMOVB,#00HMOVA,7FHMOVB,AANLA,#0FHMOVR6,ALCALLKSETBITMOV7FH,R6

;15H=1,轉(zhuǎn)移,設(shè)置分鐘的個(gè)位;否則設(shè)置分鐘的十位〔如下〕;12H=0,沒有回車(不作設(shè)置位的調(diào)整,操作如下);12H=1,有回車,進(jìn)展設(shè)置位調(diào)整;清A;清R6;清B;取出分鐘“十位”數(shù)據(jù);原始數(shù)據(jù)暫存于B;屏蔽掉高四位;R6;回存分鐘“十位”數(shù)據(jù);清“回車”掌握位;返回;置掌握參量,使轉(zhuǎn)移到設(shè)置分鐘“個(gè)位”;12H=0,沒有回車(不作設(shè)置位的調(diào)整操作如下);12H=1,有回車,進(jìn)展設(shè)置位調(diào)整;清A;清R6;清B;取出分鐘“個(gè)位”數(shù)據(jù);原始數(shù)據(jù)暫存于B;屏蔽掉高四位;R6;回存分鐘“個(gè)位”數(shù)據(jù)SETB0FHSETB17HCLR12H ;清“回車”掌握位KEYS55:LJMPKEYSO ;返回;時(shí)鐘設(shè)置完畢,交通燈設(shè)置開頭KEYS1A:JB0BH,KEYS1B ;哪組交通燈,0BH=1〔2組,轉(zhuǎn)移到KEYS1B〕,0BH=0〔1組,進(jìn)展如下操作〕MOVPSW,#00H ;第1組交通燈設(shè)置,工作存放器0區(qū)JB13H,KEYS1C ;13H=11211〔如下〕JB12H,KEYS1CMOVA,#00HMOVB,#00HMOVR6,#00HMOVA,79HMOVB,AANLA,#0FHMOVR6,ALCALLKSETBITMOV79H,R6MOV52H,R6CLR12HLJMPKEYSOKEYS1C:SETB13HJNB0FH,KEYS1DCLR0FHJB12H,KEYS1BKEYS1D:MOVA,#00HMOVB,#00HMOVR6,#00HMOVA,78HMOVB,AANLA,#0FHMOVR6,ALCALLKSETBITMOV78H,R6MOV51H,R6CLR12HSETB0FH

;12H=0,沒有回車(不作設(shè)置位的調(diào)整,操作如下);12H=1,有回車,進(jìn)展設(shè)置位調(diào)整;清A;清B;清R611;原始數(shù)據(jù)暫存于B;屏蔽掉高四位111〔如下〕11LED4;清回車掌握;返回2;12H=0,沒有回車(不作設(shè)置位的調(diào)整,操作如下);12H=1,有回車,進(jìn)展設(shè)置位調(diào)整;清A;清B;清R612;原始數(shù)據(jù)暫存于B;屏蔽掉高四位;R6212〔如下〕22LED3;清回車掌握LJMPKEYSO ;返回KEYS1B:SETB0BH 參量,轉(zhuǎn)移到第2組交通燈設(shè)置MOVPSW,#00H ;工作存放器0區(qū)JNB0FH,KEYS1B0CLR0FHJB13H,KEYS1E 轉(zhuǎn)移,設(shè)置第2組交通燈的第2位;否則設(shè)置第2組交通燈的第1位〔如下〕JB12H,KEYS1E ;12H=0,沒有回車(不作設(shè)置位的調(diào)整,操作如下);12H=1,有回車,進(jìn)展設(shè)置位調(diào)整KEYS1B0:MOVA,#00H ;清AMOVB,#00H ;清BMOVR6,#00H ;清R6MOVA,77H MOVB,A ;原始數(shù)據(jù)暫存于BANLA,#0FH ;屏蔽掉高四位MOVR6,A 1LCALLKSETBIT 〕MOV77H,R6 ;回存第1位數(shù)據(jù)到顯示存儲(chǔ)單元MOV54H,R6 1LED2CLR12H ;清回車掌握CLR13H ;清掌握參量SETB0FHLJMPKEYSO ;返回KEYS1E:SETB13H 2JNB0FH,KEYS1E0JB12H,KEYSO ;12H=0,沒有回車(不作設(shè)置位的調(diào)整,操作如下);12H=1,有回車,完畢KEYS1E0:MOVA,#00H ;清AMOVB,#00H ;清BMOVR6,#00H ;清R6MOVA,76H MOVB,A ;原始數(shù)據(jù)暫存于BANLA,#0FH ;屏蔽掉高四位MOVR6,A ;R62LCALLKSETBIT 〕MOV76H,R6 ;回存第2位數(shù)據(jù)到顯示存儲(chǔ)單元MOV53H,R6 ;回存第2位數(shù)據(jù)LED1CLR12H ;清回車掌握SETB0FHSETB17H ;置設(shè)置完畢標(biāo)志KEYSO: SETBP1.6SETBP1.7RET ;返回;時(shí)間設(shè)置每位數(shù)據(jù)變化子程序,R6—入口(只是位顯示數(shù)據(jù))/出口〔顯示數(shù)據(jù)和掌握位〕KSETBIT:MOVPSW,#00H 0JB10H,KSETBTZ ;推斷數(shù)據(jù)變化的方向,10H=0〔減小,如下〕,10H=1〔增加,轉(zhuǎn)移到KSETBTZ〕CJNER6,#00H,KSETBTY00〔轉(zhuǎn)移〕;0,操作如下MOVR6,#09H AJMPKSETBTOKSETBTY:DECR6AJMPKSETBTOR6,#09H,KSETBTX;是否為9,不為9(轉(zhuǎn)移,不作任何變化);為9,操作如下MOVR6,#00H ;假設(shè)為9,則置為0AJMPKSETBTOKSETBTX:INCR6KSETBTO:MOVA,#00H ;清AMOVA,B;取出原始數(shù)據(jù)ANLA,#0F0H44〔即:掌握位和鍵位〕ORLA,R64MOVR6,A;賦值給出口R6RET;返回;鍵盤掃描與時(shí)間設(shè)置模塊完畢;#時(shí)間計(jì)算模塊TIME: JNB11H,TIME1;檢驗(yàn)工作模式,11H=0(正常工作模式,轉(zhuǎn)移,計(jì)算時(shí)間),11H=1(時(shí)間設(shè)置,不作任何時(shí)間計(jì)算)MOV50H,#00H ;清秒鐘數(shù)據(jù)0LJMPTIMEO;下面依據(jù)當(dāng)前的顯示模式,打算哪一存儲(chǔ)單元轉(zhuǎn)變數(shù)據(jù),并進(jìn)展時(shí)、分、秒之間的進(jìn)位TIME1:JB0AH,TIME2;0AH=1,0AH=0MOVPSW,#00H0MOVA,#00H;A0MOVR4,A;清R4MOVA,50H50HCJNEA,#60,TIME1O;當(dāng)前秒鐘是否到60秒,沒到,不作任何操作,轉(zhuǎn)移;相等,進(jìn)位到分鐘,操作如下MOV50H,#00H0INC7FH1MOVA,7FH;取出分鐘個(gè)位存儲(chǔ)單元數(shù)值A(chǔ)NLA,#0FH;屏蔽掌握位的值,保存分鐘“個(gè)位”時(shí)間值進(jìn)展操作〔00001111〕CJNEA,#10,TIME1O;推斷分鐘“個(gè)位”是否到10分,沒到,不作任何操作,轉(zhuǎn)移;相等,進(jìn)位到分鐘的十位,操作如下MOV7FH,#0D0H 0+LED1、LED2顯示掌握碼及P1〔11010000〕INC7EH 1MOVA,7EH ;取出分鐘十位存儲(chǔ)單元數(shù)值A(chǔ)NLA,#00FH ;屏蔽掌握位的值,保存分鐘“十位”時(shí)間值進(jìn)展操作〔00001111〕;推斷分鐘“十位”是否到6,沒到,不作任何操作,轉(zhuǎn)移;相等,進(jìn)位到小時(shí)的個(gè)位,操作如下MOV7EH,#0E0H ;分鐘“十位”存儲(chǔ)單元清0+LED1、LED2顯示掌握碼及P1口鍵碼初值〔11100000〕INC7DH 1MOVA,7DH ;取出小時(shí)“個(gè)位”數(shù)值A(chǔ)NLA,#0FH ;屏蔽掌握位的值,保存小時(shí)“個(gè)位”值進(jìn)展操作〔00001111〕MOVR4,A ;小時(shí)“個(gè)位”暫存于R4MOVA,7CH ;取出小時(shí)“十位”存儲(chǔ)單元數(shù)值A(chǔ)NLA,#0FH ;屏蔽掌握位的值,保存小時(shí)“十位”值進(jìn)展操作〔00001111〕A,#2,TIME1A;小時(shí)“十位”是否到2,沒到,轉(zhuǎn)移(推斷“個(gè)位”是否到10);相等,操作如下(推斷是否需要轉(zhuǎn)天)MOVA,R4 ;小時(shí)“個(gè)位”給A,便于比較;小時(shí)“個(gè)位”是否到4,沒到,轉(zhuǎn)移(不作任何操作,前已經(jīng)加1);相等,需要轉(zhuǎn)天,操作如下MOV7DH,#0C0H ;小時(shí)“個(gè)位”數(shù)據(jù)清0+LED1、LED2顯示掌握碼及P1口鍵碼初值〔11000000〕MOV7CH,#0C0H 0+LED1、LED2顯示掌握碼及P1〔11000000〕LJMPTIME1OTIME1A:MOVA,R4 ;小時(shí)“個(gè)位”給A,便于比較CJNEA,#10,TIME1O10,轉(zhuǎn)移〔1〕;10INC7CH 1MOV7DH,#0C0H 0+LED1、LED2P1〔11000000〕TIME1O:LJMPTIMEO;交通燈模式,顯示狀況分兩組,應(yīng)分別考慮,但每組只有秒鐘TIME2: JB0BH,TIME3 ;0BH=1(第2組交通燈顯示)轉(zhuǎn)移,0BH=0(第1組交通燈顯示),操作如下MOVPSW,#00H ;工作存放器0區(qū)MOVA,#00H ;A0MOVR2,A ;R20MOVR5,A ;R50MOVA,50H ;秒鐘數(shù)據(jù)取出與ACJNEA,#1,TIME2O 〔不作任何操作〕;相等,操作如下〔減1秒,或借位〕MOV50H,#00H ;清1秒鐘存儲(chǔ)單元50HMOVA,78H 1ANLA,#0FH 剩下秒鐘個(gè)位數(shù)據(jù)(00001111)MOVR2,A ;時(shí)間“個(gè)位”暫存R2MOVA,79H 1ANLA,#0FH 剩下秒鐘十位數(shù)據(jù)(00001111)MOVR5,A ;時(shí)間“十位”暫存R5CJNER5,#00H,TIME2C000,操作如下CJNER2,#03H,TIME2A;是否置“黃”燈閃耀標(biāo)志,不等,轉(zhuǎn)移(檢查本組交通燈是否完畢);等于,進(jìn)展如下置標(biāo)志操作SETB0CH LJMPTIME2BR2,#00H,TIME2B;秒鐘“個(gè)位”是否為0,非0,轉(zhuǎn)移;為0,清“黃”燈標(biāo)志,并交換顯示組號(hào),操作如下CLR0CH ;取消“黃”燈閃耀SETB0BH 0BH1,轉(zhuǎn)為其次組交通燈顯示MOV79H,52H ;置“十位”初值MOV78H,51H ;置“個(gè)位”初值LJMPTIME2OTIME2B:DEC78H LJMPTIME2OTIME2C:CJNER2,#00H,TIME2D;檢查“個(gè)位“是否需要借位(“十位”不為0),不為0,轉(zhuǎn)移(不需要借位);為0,需要借位,操作如下MOV78H,#0C9H ;“個(gè)位”置9+LED1、LED2顯示掌握碼及P1口鍵碼初值DEC79H LJMPTIME2OTIME2D:DEC78H TIME2O:LJMPTIMEO2TIME3:MOVPSW,#00H MOVA,#00H ;A清0MOVR2,A ;R20MOVR5,A ;R50MOVA,50H ;秒鐘數(shù)據(jù)取出與ACJNEA,#1,TIMEO 〔不作任何操作〕;相等,操作如下〔減1秒,或借位〕MOV50H,#00H ;清1秒鐘存儲(chǔ)單元50HMOVA,76H 2ANLA,#0FH 剩下秒鐘個(gè)位數(shù)據(jù)(00001111)MOVR2,A ;時(shí)間“個(gè)位”暫存R2MOVA,77H 1ANLA,#0FH 剩下秒鐘十位數(shù)據(jù)(00001111)MOVR5,A ;時(shí)間“十位”暫存R5CJNER5,#00H,TIME3C000,操作如下CJNER2,#03H,TIME3A;是否置“黃”燈閃耀標(biāo)志,不等,轉(zhuǎn)移(檢查本組交通燈是否完畢);等于,進(jìn)展如下置標(biāo)志操作SETB0CH 1LJMPTIME3BR2,#00H,TIME3B;秒鐘“個(gè)位”是否為0,非0,轉(zhuǎn)移;為0,清“黃”燈標(biāo)志,并交換顯示組號(hào),操作如下CLR0CH ;取消“黃”燈閃耀CLR0BH ;0BH0,轉(zhuǎn)為第一組交通燈顯示MOV77H,54H ;置“十位”初值MOV76H,53H ;置“個(gè)位”初值LJMPTIMEOTIME3B:DEC76H LJMPTIMEOTIME3C:CJNER2,#00H,TIME3D;檢查“個(gè)位“是否需要借位(“十位”不為0),不為0,轉(zhuǎn)移(不需要借位);為0,需要借位,操作如下MOV76H,#0D9H ;“個(gè)位”置9+LED1、LED2顯示掌握碼及P1口鍵碼初值DEC77H LJMPTIMEOTIME3D:DEC76H TIMEO: RET;#顯示模塊〔含兩種顯示模式:0AH=0,0AH=1〕;時(shí)間顯示******************************************************DISP: JB0AH,DISP1 ;0AH=1MOVP1,7FH LCALLDELAYMOVP1,7EH LCALLDELAYMOVP1,7DH MOVSBUF,7BH WTLED3:JNBTI,WTLED3CLRTILCALLDELAYMOVP1,7CH ;LED4MOVSBUF,7AH WTLED4:JNBTI,WTLED4CLRTILCALLDELAYMOVA,#00H ;清掌握位MOVSBUF,A ;清掌握位WTCLR1:JNBTI,WTCLR1CLRTILJMPDISPO;交通燈顯示*****************************************************DISP1:JB0BH,DISP2 ;0BH=121第1組交通燈顯示 ;第1組交通燈下的第2組顯示 MOVP1,76H ;顯示第2組LED1LCALLDELAYMOVP1,77H 2LED2LCALLDELAY11;0CH=1轉(zhuǎn)移到“黃”燈“閃”,否則進(jìn)展下面“黃”燈“不閃”(第1組)MOVP1,78H ;第1組交通燈LED3顯示MOVSBUF,75H ;掌握位,點(diǎn)亮交通燈WTFLED3:JNBTI,WTFLED3CLRTILCALLDELAYMOVP1,79H 1LED4MOVSBUF,74H ;掌握位,點(diǎn)亮交通燈WTFLED4:JNBTI,WTFLED4CLRTILCALLDELAYDEC74H;清出顯示掌握位,保存交通燈點(diǎn)亮掌握位MOVSBUF,74HWTFCL0:JNBTI,WTFCL0CLRTIINC74H;恢復(fù)顯示掌握位,保存交通燈點(diǎn)亮掌握位LJMPDISPO;第1組“黃1”燈“閃” DISP1Y:MOVP1,78H ;LED3MOVSBUF,72H ;WTF1Y1:JNBTI,WTF1Y1CLRTILCALLDELAYMOVP1,79H ;LED4MOVSBUF,73H WTF1Y2:JNBTI,WTF1Y2CLRTILCALLDELAYDEC73H;清出顯示掌握位,保存交通燈點(diǎn)亮掌握位MOVSBUF,73HWTFCL1:JNBTI,WTFCL1CLRTIINC73H;恢復(fù)顯示掌握位,保存交通燈點(diǎn)亮掌握位LJMPDISPO第2組交通燈顯示 ;第2組交通燈LED1、LED2顯示 DISP2:MOVP1,76H 2LED1LCALLDELAYMOVP1,77H ;LED2LCALLDELAY21LED;0CH=1轉(zhuǎn)移到“黃”燈“閃”,否則進(jìn)展下面“黃”燈“不閃”(第2組)MOVP1,78H ;第1組交通燈LED3顯示MOV71H,#8AH 位10001010MOVSBUF,71H ;交通燈點(diǎn)亮和掌握位WTFL3:JNBTI,WTFL3CLRTILCALLDELAYMOVP1,79H 1組交通燈LED4MOV71H,#89H 2LED4MOVSBUF,71H ;點(diǎn)亮交通燈和掌握位WTFL4:JNBTI,WTFL4CLRTILCALLDELAYMOV71H,#88H ;清出顯示掌握位,保存交通燈點(diǎn)亮掌握位MOVSBUF,71HWTFCL2:JNBTI,WTFCL2CLRTILJMPDISPO;第2組交通燈“黃2”燈“閃” DISP2Y:MOVP1,78H ;LED3顯示MOVSBUF,70H 2”閃掌握位,LED3:〔01000010〔42H〕WTF2Y3:JNBTI,WTF2Y3CLRTILCALLDELAYMOVP1,79H ;LED4MOVSBUF,60H 2”閃掌握位,LED4:01000001〔41H〕WTF2Y4:JNBTI,WTF2Y4CLRTILCALLDELAYDEC60HMOVSBUF,60HWTFCL3:JNBTI,WTFCL3CLRTIINC60HDISPO:RET;#延時(shí)子程序,雙重循環(huán)DELAY:MOVPSW,#00HMOVR5,#32HFOR1:MOVR4,#20HFOR2:DJNZR4,FOR2DJNZR5,FOR1RET;#INT1INT11: JB11H,STIME;11H=1〔處于時(shí)間設(shè)置模式〕,時(shí)間顯示模式/

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論