Ìàòåðèàëû ñàéòà
Ýòî èíòåðåñíî
Ðàçðàáîòêà àâòîìàòè÷åñêîãî îïðåäåëèòåëÿ íîìåðà
8. Òåêñò ïðîãðàììû ORG 00H JMP START ;ÏÅÐÅÕÎÄ ÍÀ ÍÀ×ÀËÎ ÏÐÎÃÐÀÌÌÛ ORG 03H JMP INT0 ;ÏÅÐÅÕÎÄ ÍÀ ÏÎÄÏÐÎÃÐÀÌÌÓ ;ÎÁÐÀÁÎÒÊÈ ÏÐÅÐÛÂÀÍÈß INT0 ORG 1BH JMP TIMER1 ;ÏÅÐÅÕÎÄ ÍÀ ÏÎÄÏÐÎÃÐÀÌÌÓ ;ÎÁÐÀÁÎÒÊÈ ÏÐÅÐÛÂÀÍÈß ÎÒ ÒÀÉÌÅÐÀ T/C1 ORG 13H ;ÏÅÐÅÕÎÄ ÍÀ ÏÎÄÏÐÎÃÐÀÌÌÓ ;ÎÁÐÀÁÎÒÊÈ ÏÐÅÐÛÂÀÍÈß INT1 JMP INT1 ORG 0BH ; ÏÅÐÅÕÎÄ ÍÀ ÏÎÄÏÐÎÃÐÀÌÌÓ ;ÎÁÐÀÁÎÒÊÈ ÏÐÅÐÛÂÀÍÈß ÎÒ ÒÀÉÌÅÐÀ T/C0 JMP TIMER0 PERIOD EQU NOT(50000)+1 PROC10 ÅQU 61H DATA1 BIT P1.0 DATA2 BIT P1.1 DATA3 BIT P1.2 DATA4 BIT P1.3 BELL BIT P1.7 PRIBOR1 BIT P0.0 PRIBPR2 BIT P0.1 PRIBOR3 BIT P0.2 PRIBOR4 BIT P0.3 PODN BIT PO.7 ST SET 5 FLAG SET 0 DLIT_1 SET 0 START: MOV PSW,#00001000B ;ÂÛÁÎÐ ÁÀÍÊÀ ÐÅÃÈÑÒÐΠRB1 MOV TMOD,#00010001B ;ÂÛÁÎÐ 16-ÁÈÒÍÎÃÎ ÏÎÄÑ×ÅÒÀ MOV TCON,#01H ;ÏÐÅÐÛÂÀÍÈÅ ÏÎ ÏÅÐÅÕÎÄÓ ÈÇ 1  0 MOV P1,#10001111B ;ÍÀÑÒÐÎÉÊÀ ÁÈÒΠÏÎÐÒÀ ÍÀ ÂÂÎÄ MOV P3,#00000100B ;ÍÀÑÒÐÎÉÊÀ ÑÎÎÒÂÅÒÑÒÂÓÞÙÈÕ ÁÈÒΠ;ÏÎÐÒÀ ÍÀ ÂÛÏÎËÍÅÍÈÅ ÀËÜÒÅÐÍÀ- ;ÒÈÂÍÛÕ ÔÓÍÊÖÈÉ HOL_HOD: SETB EA ;ÐÀÇÐÅØÅÍÈÅ ÂÑÅÕ ÏÐÅÐÛÂÀÍÈÉ MOV PCON,#01H ;ÂÊËÞ×ÅÍÈÅ ÐÅÆÈÌÀ ÕÎËÎÑÒÎÃÎ ÕÎÄÀ MOV RO,#PROC10 ;10% ÎÒ 250 ÌÑ LOOP: JCNE ST,#0,LOOP CLR EA ;ÇÀÏÐÅÒ ÂÑÅÕ ÏÐÅÐÛÂÀÍÈÉ CJNE R0,DLIT_1,PROV;ÑÐÀÂÍÈÂÀÅÌ RO C DLIT_1 È ÅÑËÈ ;RO<>DLIT_1 ÒÎ ÏÅÐÅÕÎÄ ÍÀ ÌÅÒÊÓ PROV: JC LABEL ;ÏÅÐÅÕÎÄ ÅÑËÈ Ñ=1,Ò.Å. DLIT_1>10% ;ÎÒ 250 ÌÑ JNC HOL_HOD ;ÏÅÐÅÕÎÄ ÅÑËÈ Ñ=0, Ò.Å.DLIT_1<10% ;ÎÒ 250 ÌÑ LABEL: SETB PODN ;ÏÎÄÍÈÌÀÅÌ ÒÐÓÁÊÓ ÒÅËÅÔÎÍÀ MOV R3,#100 ;ÇÀÍÎÑÈÌ Â R3 ÊÎËÈ×ÅÑÒÂÎ ÖÈÊËΠ;ÄÅËÀÅÒÑß ÇÀÄÅÐÆÊÀ ÍÀ 5 ÑÅÊÓÍÄ CICLE: ACALL DELAY ;ÂÛÇÛÂÀÅÌ ÇÀÄÅÐÆÊÓ 50 ÌÑ JB DATA1,PRIB1 ;ÏÅÐÅÕÎÄ ÅÑËÈ ÂÊËÞ×ÀÞÒ ÏÐÈÁÎÐ ¹1 JMP NOT_READ1 ;ÅÑËÈ ÍÅ ÂÊËÞ×ÀÞÒ ÒÎ ÈÄÅÌ ÄÀËÜØÅ PRIB1: SETB PRIBOR1 ;ÂÊËÞ×ÅÍÈÅ ÏÐÈÁÎÐÀ ¹1 ACALL NOT_DATA ;ÏÐÖÅÄÓÐÀ ÎÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ Ò/Ñ0 JMP HOL_HOD ;ÏÅÐÅÂÎÄ ÌÊ Â ÐÐÅÆÈÌ ÕÎËÎÑÒÎÃÎ ÕÎÄÀ NOT_READ1: JB DATA2,PRIB2 ;ÏÅÐÅÕÎÄ ÅÑËÈ ÂÊËÞ×ÀÞÒ ÏÐÈÁÎÐ ¹2 JMP NOT_READ2 ;ÅÑËÈ ÍÅÒ Â ÝÒÎÌ ÐÀÇÐßÄÅ "1" ;ÏÐÎÂÅÐßÅÌ ÑËÅÄÓÞÙÈÉ ÁÈÒ PRIB2: SETB PRIBOR2 ;ÂÊËÞ×ÅÍÈÅ ÏÐÈÁÎÐÀ ¹2 ACALL NOT_DATA ;ÏÐÖÅÄÓÐÀ ÎÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ Ò/Ñ0 JMP HOL_HOD ;ÏÅÐÅÂÎÄ ÌÊ Â ÐÐÅÆÈÌ ÕÎËÎÑÒÎÃÎ ;ÕÎÄÀ NOT_READ2: JB DATA3,PRIB3 ;ÏÅÐÅÕÎÄ ÅÑËÈ ÂÊËÞ×ÀÞÒ ÏÐÈÁÎй3 JMP NOT_READ3 ;ÅÑËÈ ÍÅ ÂÊËÞ×ÀÞÒ ÒÎ ÈÄÅÌ ÄÀËÜØÅ PRIB3: SETB PRIBOR3 ;ÂÊËÞ×ÅÍÈÅ ÏÐÈÁÎÐÀ ¹3 ACALL NOT_DATA ;ÏÐÖÅÄÓÐÀ ÎÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ Ò/Ñ0 JMP HOL_HOD ;ÏÅÐÅÂÎÄ ÌÊ Â ÐÐÅÆÈÌ ÕÎËÎÑÒÎÃÎ ;ÕÎÄÀ NOT_READ3: JB DATA4,PRIB4 ;ÏÅÐÅÕÎÄ ÅÑËÈ ÂÊËÞ×ÀÞÒ ÏÐÈÁÎÐ ¹4 JMP NOT_READ4 ;ÅÑËÈ ÍÅ ÂÊËÞ×ÀÞÒ ÒÎ ÈÄÅÌ ÄÀËÜØÅ PRIB4: SETB PRIBOR4 ;ÂÊËÞ×ÅÍÈÅ ÏÐÈÁÎÐÀ ¹4 NOT_READ4: ACALL NOT_DATA ;ÏÐÖÅÄÓÐÀ ÎÑÒÀÍÎÂÊÈ ÒÀÉÌÅÐÀ Ò/Ñ0 JMP HOL_HOD ;ÏÅÐÅÂÎÄ ÌÊ Â ÐÐÅÆÈÌ ÕÎËÎÑÒÎÃÎ ;ÕÎÄÀ DJNZ R3,#0,CICLE ;ÓÌÅÍÜØÅÍÈÅ R3 ÍÀ 1 È ÅÑËÈ R3 ÍÅ ;ÐÀÂÍÎ "0" ÒÎ ÏÅÐÅÕÎÄ ÍÀ ÌÅÒÊÓ ;********************************************** ;*****************ÏÎÄÏÐÎÃÐÀÌÌÛ***************** ;********************************************** DELAY: MOV TL0,#LOW(NOT(50000-1)) ;ÇÀÍÎÑÈÌ ÌËÀÄÜØÓÞ ×ÀÑÒÜ ;ÎÒ 50 ÌÑ MOV TH0,#HIGH(NOT(50000-1)) ;ÇÀÍÎÑÈÌ ÑÒÀÐØÓÞ ×ÀÑÒÜ ;ÎÒ 50 ÌÑ SETB TR0 ;ÏÓÑÊ ÒÀÉÌÅÐÀ Ò/Ñ0 WAIT_1: JNB TF0,WAIT_1 ;ÓÑÒÀÍÎÂÈËÑß ËÈ ÔËÀà ;ÏÐÅÐÛÂÀÍÈß CLR TR0 ;ÎÑÒÀÍÎÂÊÀ ÒÀÉÌÅÐÀ Ò/Ñ0 CLR TF0 ;ÑÁÎÑ ÔËÀÃÀ ÏÐÅÐÛÂÀÍÈß RET ;ÂÎÇÂÐÀÒ ÈÇ ÏÐÎÖÅÄÓÐÛ ;********************************************* ;********************************************* NOT_DATA: CLR TR0 ;ÓÑÒÀÍÎÂÊÀ ÒÀÉÌÅÐÀ Ò0 MOV R3,#0 ;ÑÁÐÎÑ Ñ×ÅÒ×ÈÊÀ MOV TH0,#0 ;ÑÁÐÎÑ ÑÎÄÅÐÆÈÌÎÃÎ ÒÀÉÌÅÐÀ MOV TL0,#0 CLR PODN RET ;*************************************************** ;*******ÏÎÄÏÐÎÃÐÀÌÌÀ ÎÁÐÀÁÎÒÊÈ ÏÐÅÐÛÂÀÍÈß INT0****** ;*************************************************** INT0: WAITC: JNB BELL,WAITC ;ÆÄÅÌ ÏÐÈÕÎÄÀ "1" ÍÀ ÂÕÎÄ ÏÎÐÒÀ MOV TL0,#0 MOV TH0,#0 MOV A,FLAG JNZ START_T0 ;ÏÅÐÅÎÄ ÅÑËÈ FLAG=1 MOV TH1,#HIGH(PERIOD) MOV TL1,#LOW(PERIOD) MOV FLAG,#1 ;ÓÑÒÀÍÀÂËÈÂÀÅÌ ÔËÀÃ, ×ÒÎ Ò1 ;ÇÀÏÓÙÅÍ SETB TR1 ;ÇÀÏÓÑÊ Ò1 START_T0: SETB TR0 ;ÇÀÏÓÑÊ Ò0 WAIT_0: JB BELL,WAIT_0 ;ÆÄÅÌ 0 CLR TR0 ;ÎÑÒÀÍÀÂËÈÂÀÅÌ Ò0 MOV A,TH0 ;×ÒÅÍÈÅ ÄÀÍÍÛÕ Â ÀÊÊÓÌÓËßÒÎÐ ADD A,DLIT_1 MOV DLIT_1,A ;ÊÎÍÅ×ÍÛÉ ÐÅÇÓËÜÒÀÒ RETI ;***************************************************** ;**ÏÎÄÏÐÎÃÐÀÌÌÀ ÎÁÐÀÁÎÒÊÈ ÏÐÅÐÛÂÀÍÈß ÎÒ ÒÀÉÌÅÐÀ Ò/Ñ1** ;***************************************************** TIMER1: CLR TR1 ;ÎÑÒÀÍÎÂÊÀ Ò1 CLR FLAG ;ÑÁÐÎÑ ÔËÀÃÀ FLAG=0 DEC ST ;ÓÌÅÍÜØÅÍÈÅ Ñ×ÅÒ×ÈÊÀ RETI INT1: RETI TIMER0 RETI Âûâîäû ïî ãëàâå  äàííîé ãëàâå ïðèâåäåí òåêñò ïðîãðàììû äëÿ ÌÊ51.  ïðîãðàììå áûëè èñïîëüçîâàíû îñíîâíûå âîçìîæíîñòè è îñíîâíûå êîìàíäû ìèêðîïðîöåññîðà.  ïðîãðàììå ïðåäóñìîòðåíà èíèöèàëèçàöèÿ îòäåëüíûõ ðåãèñòðîâ, äëÿ ïðîñòîòû âîñïðèÿòèÿ òåêñò ïðîãðàììû ðàçáèò íà îòäåëüíûå ïîäïðîãðàììû. Òàêæå äëÿ ïðîñòîòû ïîíèìàíèÿ îñíîâíûõ ìîìåíòîâ ïðèâåäåíû ïîÿñíåíèÿ, à îòäåëüíûå áèòû ïîèìåíîâàíû, òî åñòü èì ïðèñâîåíû îòäåëüíûå èìåíà, ñîîòâåòñòâóþùèå îïðåäåëåííûì ôóíêöèÿì ñèñòåìû.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18