Ôîðóì » Äëÿ íà÷èíàþùèõ. » Îïðîñ êëàâèàòóðû 3*4 » Îòâåòèòü

Îïðîñ êëàâèàòóðû 3*4

Habble: Åñòü ñõåìà: Åñòü àëãîðèòì: Åñòü ïðîãðàììà: [more][pre2] LIST p=16f877a ;óñòàíàâëèâàåì òèï ìèêðîêîíòðîëëåðà __CONFIG 03F31H ;áèò çàùèòû âûêëþ÷åí, WDT âûêëþ÷åí, ;ñòàíäàðòíûé XT - ãåíåðàòîð. include "P16F877A.inc" ;---------------------------------------------- REG_1 EQU 20 ;ÐÅÃÈÑÒÐÛ ÇÀÄÅÐÆÊÈ REG_2 EQU 21 ; REG_3 EQU 22 ; CONTROL_OPROS EQU 24 ; KnopInputPORT_REG EQU 25 ;---------------------------------------------- Vvod_1 EQU 2f Vvod_2 EQU 30 Vvod_3 EQU 31 Vvod_4 EQU 32 Vvod_5 EQU 33 Vvod_6 EQU 34 Vvod_7 EQU 35 Vvod_8 EQU 36 OTZHATIE EQU 37 ;---------------------------------------------- #DEFINE Line_123 PORTB,4 #DEFINE Line_456 PORTB,5 #DEFINE Line_789 PORTB,6 #DEFINE Line__0_ PORTB,7 #DEFINE Stolb_369_ PORTB,1 #DEFINE Stolb_2580 PORTB,2 #DEFINE Stolb_147_ PORTB,3 #DEFINE KnopInputPORT PORTB ; Ïîðò êëàâèàòóðû ;---------------------------------------------- ;--ÑÎÎÒÂÅÒÑÒÂÈÅ 16-ÎÉ ÑÈÑÒÅÌÅ ÍÀÆÀÒÛÌ ÊÍÎÏÊÀÌ-- ;0X19 -->1 ;0X15 -->2 ;0X13 -->3 ;0X29 -->4 ;0X25 -->5 ;0X23 -->6 ;0X49 -->7 ;0X45 -->8 ;0X43 -->9 ;0X85 -->0 ;--------------------------------------------------------------------------------------- ORG 0 NACHALO: ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹>>>>>ÈÍÈÖÈÀËÈÇÀÖÈß ÌÊ<<<<<¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ CLRF PORTB CLRF INTCON MOVLW B'00001111' BANKSEL TRISB MOVWF TRISB MOVLW B'10001000' MOVWF TRISC BANKSEL OPTION_REG movlw b'10000000' ;ÏÎÄÒßÃÈÂÀÞÙÈÅ ÐÅÇÈÑÒÎÐÛ ÎÒÊËÞ×ÅÍÛ movwf OPTION_REG BANKSEL 0 ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹>>>>>ÀËÃÎÐÈÒÌ ÎÁÐÀÁÎÒÊÈ ÑÎÑÒÎßÍÈß ÊËÀÂÈØ<<<<<¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ KNOPKI_START: CALL CLRF_VVODS ;Î×ÈÑÒÊÀ "ÃÐßÇÈ"  ÐÅÃÈÑÒÐÀÕ ÑÎÕÐÀÍÅÍÈß ÖÈÔÐ ÂÂÎÄÀ MOVLW Vvod_1 ;ÏÅÐÅÄ ÍÀ×ÀËÎÌ ÎÏÐÎÑÀ ÊËÀÂÈØ ÍÓÆÍÎ ÏÐÎÏÈÑÀÒÜ ÀÄÐÅÑ ÏÅÐÂÎÉ ß×ÅÉÊÈ (ÐÅÃÈÑÒÐÀ) ÏÀÌßÒÈ ÄËß ÑÎÕÐÀÍÅÍÈß ÏÅÐÂÎÃÎ ÂÂÅÄÅÍÍÎÃÎ ×ÈÑËÀ MOVWF FSR ; ÐÅÃÈÑÒÐ FSR ÄËß ÊÎÑÂÅÍÍÎÉ ÀÄÐÅÑÀÖÈÈ Â ÄÀËÜÍÅÉØÅÌ (ÑÌÎÒÐÈÒÅ ÌÅÒÊÓ ZAPIS_KNOPKI:) ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ KNOPKI: CLRF PORTB ;Î×ÈÒÊÀ ÏÎÐÒÀ BSF Line_123 ;ÓÑÒÀÍÎÂÊÀ ÍÀ ËÈÍÈÞ 123 ËÎÃ. 1 GOTO OPROS ;ÎÏÐÎÑ ÊËÀÂÈØ LINE456: CLRF PORTB BSF Line_456 ;ÓÑÒÀÍÎÂÊÀ ÍÀ ËÈÍÈÞ 456 ËÎÃ. 1 GOTO OPROS ;ÎÏÐÎÑ ÊËÀÂÈØ LINE789: CLRF PORTB BSF Line_789 ;ÓÑÒÀÍÎÂÊÀ ÍÀ ËÈÍÈÞ 789 ËÎÃ. 1 GOTO OPROS ;ÎÏÐÎÑ ÊËÀÂÈØ LINE_0_: CLRF PORTB BSF Line__0_ ;ÓÑÒÀÍÎÂÊÀ ÍÀ ËÈÍÈÞ *0# ËÎÃ. 1 GOTO OPROS ;ÎÏÐÎÑ ÊËÀÂÈØ OPROS: BTFSC Stolb_147_ ;ËÞÁÀß ÈÇ ÊÍÎÏÎÊ 147* ÍÀÆÈÌÀËÀÑÜ? GOTO ZAPIS_KNOPKI ;ÄÀ ;ÍÅÒ BTFSC Stolb_2580 ;ËÞÁÀß ÈÇ ÊÍÎÏÎÊ 2580 ÍÀÆÈÌÀËÀÑÜ? GOTO ZAPIS_KNOPKI ;ÄÀ ;ÍÅÒ BTFSC Stolb_369_ ;ËÞÁÀß ÈÇ ÊÍÎÏÎÊ 369# ÍÀÆÈÌÀËÀÑÜ? GOTO ZAPIS_KNOPKI ;ÄÀ ;ÍÅÒ BTFSC Line_123 ;ÝÒÀ ÏÏ ÂÛÇÂÀÍÀ Ñ ËÈÍÈÈ 123? GOTO LINE456 ;ÄÀ, ÈÄÅÌ Ê ËÈÍÈÈ 456 ;ÍÅÒ BTFSC Line_456 ;ÝÒÀ ÏÏ ÂÛÇÂÀÍÀ Ñ ËÈÍÈÈ 456? GOTO LINE789 ;ÄÀ, ÈÄÅÌ Ê ËÈÍÈÈ 789 ;ÍÅÒ BTFSC Line_789 ;ÝÒÀ ÏÏ ÂÛÇÂÀÍÀ Ñ ËÈÍÈÈ 789? GOTO LINE_0_ ;ÄÀ, ÈÄÅÌ Ê ËÈÍÈÈ *0# ;ÍÅÒ GOTO KNOPKI ;ÝÒÀ ÏÏ ÂÛÇÂÀÍÀ Ñ ËÈÍÈÈ *0#, ÈÄÅÌ Ê ËÈÍÈÈ 123 ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ZAPIS_KNOPKI: CALL DREBEZG ;ÏÎÄÎÆÄÀÒÜ 20 ÌÑ ÏÎÊÀ ÏÐÎÉÄÅÒ ÄÐÅÁÅÇà ÍÀÆÀÒÎÉ ÊÍÎÏÊÈ MOVF KnopInputPORT,W ;ÍÅÒ, ÑÊÎÏÈÐÎÂÀÒÜ KnopInputPORT   ÀÊÓÌ. MOVWF KnopInputPORT_REG ;ÑÎÕÐÀÍÈÌ ÇÍÀ×ÅÍÈÅ ÏÎÐÒÀ ÄËß ÄÀËÜÍÅÉØÅÉ ÎÁÐÀÁÎÒÊÈ MOVF CONTROL_OPROS,W XORLW .8 ;ÓÆÅ ÍÀÆÈÌÀËÎÑÜ ÁÎËÜØÅ 8-ÌÈ ÖÛÔÐ? BTFSC STATUS,Z GOTO CLR_REGS MOVF KnopInputPORT_REG,W MOVWF INDF ;ÇÀÍÅÑÅÌ ÍÀÆÀÒÓÞ ÊÍÎÏÊÓ Â ÎÏÅÐÀÒÈÂÍÓÞ ÏÀÌßÒÜ INCF FSR,F ;ÏÎÄÃÎÒÎÂÈÌ ÑËÅÄÓÞÙÓÞ ß×ÅÉÊÓ KNOPKI_ECHE_NAZHATIE: BTFSC Stolb_147_ ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 147* ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ BTFSC Stolb_2580 ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 2580 ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ BTFSC Stolb_369_ ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 369# ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ CALL DREBEZG ;ÏÎÄÎÆÄÀÒÜ 20 ÌÑ ÏÎÊÀ ÏÐÎÉÄÅÒ ÄÐÅÁÅÇà ÎÒÆÀÒÎÉ ÊÍÎÏÊÈ INCF CONTROL_OPROS,F ;ÓÊÀÆÅÌ ÑÊÎËÜÊÎ ÐÀÇ ÂÂÎÄÈËÎÑÜ ÖÛÔÐ GOTO KNOPKI ;ÏÐÎÄÎËÆÈÒÜ ÎÏÐÎÑ ÊËÀÂÈÀÒÓÐÛ CLR_REGS: CALL CLRF_VVODS KNOPKI_ECHE_NAZHATIE_2: BTFSC Stolb_147_ ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 147* ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE_2 ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ BTFSC Stolb_2580 ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 2580 ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE_2 ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ BTFSC Stolb_369_ ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 369# ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE_2 ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ CALL DREBEZG ;ÏÎÄÎÆÄÀÒÜ 20 ÌÑ ÏÎÊÀ ÏÐÎÉÄÅÒ ÄÐÅÁÅÇà ÎÒÆÀÒÎÉ ÊÍÎÏÊÈ GOTO NACHALO ;ÍÀ×ÀÒÜ ÑÍÀ×ÀËÀ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹---Î×ÈÑÒÊÀ ÐÅÃÈÑÒÐΠÕÐÀÍÅÍÈß ÍÀÆÀÒÛÕ ÊËÀÂÈØ-------¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ CLRF_VVODS: CLRF Vvod_1 CLRF Vvod_2 CLRF Vvod_3 CLRF Vvod_4 CLRF Vvod_5 CLRF Vvod_6 CLRF Vvod_7 CLRF Vvod_8 CLRF CONTROL_OPROS RETURN ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹---ÇÀÄÅÐÆÊÀ ÄËß ÏÎÄÀÂËÅÍÈß ÄÐÅÁÅÇÃÀ ÊÍÎÏÎÊ---------¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ DREBEZG: ; ÇÀÄÅÐÆÊÀ 20 000 ÌÀØÈÍÍÛÕ ÖÈÊËΠ; ÄËÈÒÅËÜÍÎÑÒÜ ÇÀÄÅÐÆÊÈ 20 ÌÈËËÈÑÅÊÓÍÄ ; ×ÀÑÒÎÒÀ ÇÀÄÀÞÙÅÃÎ ÃÅÍÅÐÀÒÎÐÀ 4 ÌÃÖ MOVLW .248 MOVWF REG_1 MOVLW .26 MOVWF REG_2 DECFSZ REG_1,F GOTO $-1 DECFSZ REG_2,F GOTO $-3 NOP RETURN ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ END [/pre2][/more] Ïðîåêò Proteus 7.7 è MPLab: http://www18.zippyshare.com/v/68962028/file.html Êàêèå íåäîñòàòêè ïðîãðàììíîé ðåàëèçàöèè âû ìîæåòå óâèäåòü? (äàííûì àëãîðèòìîì ïîëüçóþñü óæå äàâíî, ñàì ñîñòàâèë, ïîñîâåòîâàòüñÿ áûëî íå ñ êåì. Èíîãäà, áûâàþò ãëþêè ïðîñêàêèâàþò, íî î÷åíü ðåäêî, è òî åñëè áûñòðî ïî êëàâèøàì òûêàòü).

Îòâåòîâ - 11

Àëåêñàíäð: Åñòü òàêàÿ êíèãà http://zalil.ru/32298536 ñ. 89 ïðî îïðîñ êëàâèàòóðû

Habble: Àëåêñàíäð ïèøåò: Åñòü òàêàÿ êíèãà ïðî îïðîñ êëàâèàòóðû ×èòàë åå, íî òàì ìíå íå ïîíÿòåí àññåìáëåð, êàêîé-òî äðåâíèé ÷òî-ëè âîò ê ïðèìåðó: [pre2] ;Ïîäïðîãðàììà ñêàíèðîâàíèÿ êëàâèàòóðû. scankeys clr key clr keypad mov cols,#4 ;Êëàâèàòóðà 4*4 setb c ;Óñòàíîâêà áèòà ïåðåíîñà :scan rl keypad clrb c ;Îáíóëÿåì áèò ïåðåíîñà jb rowl, press inc key jb row2,press inc key jb row3, press inc key jb row4, press inc key djnz cols,:sczn ;Ïðîâåðêà îêîí÷àíèÿ öèêëà press ret ;Âîçâðàùåíèå ñ íîìåðîì â key. [/pre2]

MAZ: Ýòî íå ïèêîâñêèé àñì. Ýòî àâð. Ïîñìîòðèòå çäåñü âàðèàíòû. Ðàáîòàþò õîðîøî.


Habble: MAZ ïèøåò: Ýòî íå ïèêîâñêèé àñì. Ýòî àâð. Òîãäà êíèãà íàïèñàíà âåñüìà ñòðàííûì îáðàçîì... Â ïðèìåðå óêàçàí PIC16C54, à èñõîäíèê äëÿ AVR... c.91-92.

MAZ: mov cols,#4 ret ; Return from subroutine Íó íàïèñàëè. Äåíüãè âçÿëè. ×åìó óäèâëÿòüñÿ. Ìîæåò ðåäàêòîð, íå ðàçáèðàëñÿ. Ìîæåòå çäåñü ñðàâíèòü

AleksScrewdriver: MAZ, âàðèàíò ïî http://chipmk.ru/index.php?option=com_content&view=article&id=80:2011-02-19-16-26-40&catid=71:2011-02-23-10-18-47&Itemid=61 ×åðåïàíîâà Àëåêñåÿ ðàáîòàåò îòëè÷íî è äî áåçîáðàçèÿ ïðîñò! Àëãîðèòì ñóïåðñêèé!

MAZ: ß òî ïðè ÷åì. Òàì äâà Àëåêñåé ðàáîòàëè.

AleksScrewdriver:  êíèãå PIC-ìèêðîêîíòðîëëåðû._Ïðàêòèêà_ïðèìåíåíèÿ_(Òàâåðíüå) îïå÷àòîê ïðåäîñòàòî÷íî, äà è â îñíîâíîì òàì äîâîëüíî ñêóäíî îïèñàíû ìèêðî÷èïîâñêèå àïíîóòû.

AleksScrewdriver: MAZ ïèøåò: ß òî ïðè ÷åì. Òàì äâà Àëåêñåé ðàáîòàëè. MAZ, ÿ ïðî÷èòàë ñòàòüþ è â êóðñå, ÷òî ×åðåïàíîâ Àëåêñåé íàïèñàë ñâîþ ñòàòüþ ïî àëãîðèòìó Alexa. Äóìàþ íåïëîõî áóäåò íà äîñóãå òóäà äîáàâèòü åùå îáðàáîòêó äâîéíîãî êëèêà êíîïêè êàê íà ìûøêå.  òàêîì ñëó÷àå ìîæíî áóäåò âî ìíîãèõ ïðèëîæåíèÿõ îáõîäèòñÿ ìèíèìàëüíûì êîëè÷åñòâîì êíîïîê, à åñëè ïðèìåíèòü ýíêîäåð (êàê íà ïàíåëÿõ àâòîìàãíèòîë) ñ âñòðîåííîé êíîïêîé íàæàòèåì íà âàë - òî âîîáùå ïðîñòî ïåñíÿ! Äëÿ óïðàâëåíèÿ ïðîñòûìè ïðèëîæåíèÿìè áîëüøå íè÷åãî è íå ïîíàäîáèòñÿ!

AleksScrewdriver: Ïðåäëàãàþ îáñóäèòü âàðèàíòû àëãîðèòìà äâîéíîãî êëèêà êíîïêè! Òåì áîëåå â òåìå ïîÿâèëñÿ àâòîð àëãîðèòìà!

Habble: Ìíå óäàëîñü óáðàòü ãëþêè êëàâèàòóðû âîîáùå!!! Ïîðàáîòàë ñ çàäåðæêîé ïðîòèâ äðåáåçãà êîíòàêòîâ, òàê ïîÿâèëèñü äâå ïîäïðîãðàììêè: îäíà äëÿ ïîäàâëåíèÿ äðåáåçãà íàæàòîé êíîïêè (ïåðåõîä îò ëîã. 0 ê ëîã. 1), äðóãàÿ äëÿ ïîäàâëåíèÿ äðåáåçãà îòæàòîé êíîïêè (ïåðåõîä îò ëîã. 1 ê ëîã. 0). Êàæäàÿ ÏÏ çàäåðæêè äëèòñÿ îêîëî 20 ìñ. Ïåðåíåñ åå â ñâîé ïðîåêò GSM-ñèãíàëèçàöèè, ðàáîòàåò ïðåâîñõîäíî, ãëàâíîå ïðàâèëüíî ðàññòàâèòü ýòè ÏÏ, åñëè íàïðèìåð ïîñëå òîëüêî ÷òî íàæàòîé êíîïêè âûïîëíèòü àíòèäðåáåçã îò îòæàòîé êíîïêè, òî ïðîãðàììà çàâèñíåò âíóòðè àíòèäðåáåçãîâîé çàäåðæêè îò îòæàòîé êíîïêè! Àëãîðèòì ïðîñò, îñíîâàí íà ìíîãîêðàòíîì îïðîñå óðîâíÿ âõîäíûõ ëèíèé êíîïîê (òî åñòü íè÷åãî íîâîãî ), çàòî ðàáîòàåò ñóïåðñêè!!! Âîò îíà, âîò îíà, ïðîãðàììà ìîåé ìå÷òû: [pre2] LIST p=16f877a ;óñòàíàâëèâàåì òèï ìèêðîêîíòðîëëåðà __CONFIG 03F31H ;áèò çàùèòû âûêëþ÷åí, WDT âûêëþ÷åí, ;ñòàíäàðòíûé XT - ãåíåðàòîð. include "P16F877A.inc" ;---------------------------------------------- REG_1 EQU 20 ;ÐÅÃÈÑÒÐÛ ÇÀÄÅÐÆÊÈ REG_2 EQU 21 ; REG_3 EQU 22 ; CONTROL_OPROS EQU 24 ; KnopInputPORT_REG EQU 25 ;---------------------------------------------- Vvod_1 EQU 2f Vvod_2 EQU 30 Vvod_3 EQU 31 Vvod_4 EQU 32 Vvod_5 EQU 33 Vvod_6 EQU 34 Vvod_7 EQU 35 Vvod_8 EQU 36 ;---------------------------------------------- #DEFINE Line_123 PORTB,4 #DEFINE Line_456 PORTB,5 #DEFINE Line_789 PORTB,6 #DEFINE Line__0_ PORTB,7 #DEFINE Stolb_369_ PORTB,1 #DEFINE Stolb_2580 PORTB,2 #DEFINE Stolb_147_ PORTB,3 #DEFINE KnopInputPORT PORTB ; Ïîðò êëàâèàòóðû ;---------------------------------------------- ;--ÑÎÎÒÂÅÒÑÒÂÈÅ 16-ÎÉ ÑÈÑÒÅÌÅ ÍÀÆÀÒÛÌ ÊÍÎÏÊÀÌ-- ;0X19 -->1 ;0X15 -->2 ;0X13 -->3 ;0X29 -->4 ;0X25 -->5 ;0X23 -->6 ;0X49 -->7 ;0X45 -->8 ;0X43 -->9 ;0X85 -->0 ;--------------------------------------------------------------------------------------- ORG 0 NACHALO: ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹>>>>>ÈÍÈÖÈÀËÈÇÀÖÈß ÌÊ<<<<<¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ CLRF PORTB CLRF INTCON MOVLW B'00001111' BANKSEL TRISB MOVWF TRISB MOVLW B'10001000' MOVWF TRISC BANKSEL OPTION_REG movlw b'10000000' ;ÏÎÄÒßÃÈÂÀÞÙÈÅ ÐÅÇÈÑÒÎÐÛ ÎÒÊËÞ×ÅÍÛ movwf OPTION_REG BANKSEL 0 ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹>>>>>ÀËÃÎÐÈÒÌ ÎÁÐÀÁÎÒÊÈ ÑÎÑÒÎßÍÈß ÊËÀÂÈØ<<<<<¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ KNOPKI_START: CALL CLRF_VVODS ;Î×ÈÑÒÊÀ "ÃÐßÇÈ"  ÐÅÃÈÑÒÐÀÕ ÑÎÕÐÀÍÅÍÈß ÖÈÔÐ ÂÂÎÄÀ MOVLW Vvod_1 ;ÏÅÐÅÄ ÍÀ×ÀËÎÌ ÎÏÐÎÑÀ ÊËÀÂÈØ ÍÓÆÍÎ ÏÐÎÏÈÑÀÒÜ ÀÄÐÅÑ ÏÅÐÂÎÉ ß×ÅÉÊÈ (ÐÅÃÈÑÒÐÀ) ÏÀÌßÒÈ ÄËß ÑÎÕÐÀÍÅÍÈß ÏÅÐÂÎÃÎ ÂÂÅÄÅÍÍÎÃÎ ×ÈÑËÀ MOVWF FSR ; ÐÅÃÈÑÒÐ FSR ÄËß ÊÎÑÂÅÍÍÎÉ ÀÄÐÅÑÀÖÈÈ Â ÄÀËÜÍÅÉØÅÌ (ÑÌÎÒÐÈÒÅ ÌÅÒÊÓ ZAPIS_KNOPKI:) ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ KNOPKI: CLRF PORTB ;Î×ÈÒÊÀ ÏÎÐÒÀ BSF Line_123 ;ÓÑÒÀÍÎÂÊÀ ÍÀ ËÈÍÈÞ 123 ËÎÃ. 1 GOTO OPROS ;ÎÏÐÎÑ ÊËÀÂÈØ LINE456: CLRF PORTB BSF Line_456 ;ÓÑÒÀÍÎÂÊÀ ÍÀ ËÈÍÈÞ 456 ËÎÃ. 1 GOTO OPROS ;ÎÏÐÎÑ ÊËÀÂÈØ LINE789: CLRF PORTB BSF Line_789 ;ÓÑÒÀÍÎÂÊÀ ÍÀ ËÈÍÈÞ 789 ËÎÃ. 1 GOTO OPROS ;ÎÏÐÎÑ ÊËÀÂÈØ LINE_0_: CLRF PORTB BSF Line__0_ ;ÓÑÒÀÍÎÂÊÀ ÍÀ ËÈÍÈÞ *0# ËÎÃ. 1 GOTO OPROS ;ÎÏÐÎÑ ÊËÀÂÈØ OPROS: BTFSC Stolb_147_ ;ËÞÁÀß ÈÇ ÊÍÎÏÎÊ 147* ÍÀÆÈÌÀËÀÑÜ? GOTO ZAPIS_KNOPKI ;ÄÀ ;ÍÅÒ BTFSC Stolb_2580 ;ËÞÁÀß ÈÇ ÊÍÎÏÎÊ 2580 ÍÀÆÈÌÀËÀÑÜ? GOTO ZAPIS_KNOPKI ;ÄÀ ;ÍÅÒ BTFSC Stolb_369_ ;ËÞÁÀß ÈÇ ÊÍÎÏÎÊ 369# ÍÀÆÈÌÀËÀÑÜ? GOTO ZAPIS_KNOPKI ;ÄÀ ;ÍÅÒ BTFSC Line_123 ;ÝÒÀ ÏÏ ÂÛÇÂÀÍÀ Ñ ËÈÍÈÈ 123? GOTO LINE456 ;ÄÀ, ÈÄÅÌ Ê ËÈÍÈÈ 456 ;ÍÅÒ BTFSC Line_456 ;ÝÒÀ ÏÏ ÂÛÇÂÀÍÀ Ñ ËÈÍÈÈ 456? GOTO LINE789 ;ÄÀ, ÈÄÅÌ Ê ËÈÍÈÈ 789 ;ÍÅÒ BTFSC Line_789 ;ÝÒÀ ÏÏ ÂÛÇÂÀÍÀ Ñ ËÈÍÈÈ 789? GOTO LINE_0_ ;ÄÀ, ÈÄÅÌ Ê ËÈÍÈÈ *0# ;ÍÅÒ GOTO KNOPKI ;ÝÒÀ ÏÏ ÂÛÇÂÀÍÀ Ñ ËÈÍÈÈ *0#, ÈÄÅÌ Ê ËÈÍÈÈ 123 ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ZAPIS_KNOPKI: CALL DREBEZG_NAZHATIYA ;ÏÎÄÎÆÄÀÒÜ 20 ÌÑ ÏÎÊÀ ÏÐÎÉÄÅÒ ÄÐÅÁÅÇà ÍÀÆÀÒÎÉ ÊÍÎÏÊÈ MOVF KnopInputPORT,W ;ÍÅÒ, ÑÊÎÏÈÐÎÂÀÒÜ KnopInputPORT   ÀÊÓÌ. MOVWF KnopInputPORT_REG ;ÑÎÕÐÀÍÈÌ ÇÍÀ×ÅÍÈÅ ÏÎÐÒÀ ÄËß ÄÀËÜÍÅÉØÅÉ ÎÁÐÀÁÎÒÊÈ MOVF CONTROL_OPROS,W XORLW .8 ;ÓÆÅ ÍÀÆÈÌÀËÎÑÜ ÁÎËÜØÅ 8-ÌÈ ÖÛÔÐ? BTFSC STATUS,Z GOTO CLR_REGS MOVF KnopInputPORT_REG,W MOVWF INDF ;ÇÀÍÅÑÅÌ ÍÀÆÀÒÓÞ ÊÍÎÏÊÓ Â ÎÏÅÐÀÒÈÂÍÓÞ ÏÀÌßÒÜ INCF FSR,F ;ÏÎÄÃÎÒÎÂÈÌ ÑËÅÄÓÞÙÓÞ ß×ÅÉÊÓ KNOPKI_ECHE_NAZHATIE: BTFSC Stolb_147_ ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 147* ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ BTFSC Stolb_2580 ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 2580 ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ BTFSC Stolb_369_ ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 369# ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ CALL DREBEZG_OTZHATIYA ;ÏÎÄÎÆÄÀÒÜ 20 ÌÑ ÏÎÊÀ ÏÐÎÉÄÅÒ ÄÐÅÁÅÇà ÎÒÆÀÒÎÉ ÊÍÎÏÊÈ INCF CONTROL_OPROS,F ;ÓÊÀÆÅÌ ÑÊÎËÜÊÎ ÐÀÇ ÂÂÎÄÈËÎÑÜ ÖÛÔÐ GOTO KNOPKI ;ÏÐÎÄÎËÆÈÒÜ ÎÏÐÎÑ ÊËÀÂÈÀÒÓÐÛ CLR_REGS: CALL CLRF_VVODS KNOPKI_ECHE_NAZHATIE_2: BTFSC Stolb_147_ ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 147* ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE_2 ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ BTFSC Stolb_2580 ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 2580 ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE_2 ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ BTFSC Stolb_369_ ;ÅÑËÈ ÕÎÒÜ ÎÄÍÀ ÊÍÎÏÊÀ ÑÒÎËÁÖÀ 369# ÍÀÆÀÒÀ, GOTO KNOPKI_ECHE_NAZHATIE_2 ;ÒÎ ÇÀÖÛÊËÈÌÑß ÎÏÐÀØÈÂÀÒÜ ÄÀËÜØÅ CALL DREBEZG_OTZHATIYA ;ÏÎÄÎÆÄÀÒÜ 20 ÌÑ ÏÎÊÀ ÏÐÎÉÄÅÒ ÄÐÅÁÅÇà ÎÒÆÀÒÎÉ ÊÍÎÏÊÈ GOTO NACHALO ;ÍÀ×ÀÒÜ ÑÍÀ×ÀËÀ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹---Î×ÈÑÒÊÀ ÐÅÃÈÑÒÐΠÕÐÀÍÅÍÈß ÍÀÆÀÒÛÕ ÊËÀÂÈØ-------¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ CLRF_VVODS: CLRF Vvod_1 CLRF Vvod_2 CLRF Vvod_3 CLRF Vvod_4 CLRF Vvod_5 CLRF Vvod_6 CLRF Vvod_7 CLRF Vvod_8 CLRF CONTROL_OPROS RETURN ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹---ÇÀÄÅÐÆÊÀ ÄËß ÏÎÄÀÂËÅÍÈß ÄÐÅÁÅÇÃÀ ÊÍÎÏÎÊ---------¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ DREBEZG_NAZHATIYA: CLRWDT MOVLW .150 MOVWF REG_1 MOVLW .8 MOVWF REG_2 BTFSC PORTB,1 GOTO B_1 BTFSC PORTB,2 GOTO B_2 BTFSC PORTB,3 GOTO B_3 GOTO DREBEZG_NAZHATIYA B_1: CLRWDT BTFSC PORTB,1 GOTO B_123 B_2: BTFSC PORTB,2 GOTO B_123 B_3: BTFSC PORTB,3 GOTO B_123 GOTO DREBEZG_NAZHATIYA B_123: DECFSZ REG_1,F GOTO B_1 DECFSZ REG_2,F GOTO B_1 RETURN ;DREBEZG ZAKONCHEN ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹---ÇÀÄÅÐÆÊÀ ÄËß ÏÎÄÀÂËÅÍÈß ÄÐÅÁÅÇÃÀ ÊÍÎÏÎÊ---------¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ DREBEZG_OTZHATIYA: CLRWDT MOVLW .150 MOVWF REG_1 MOVLW .8 MOVWF REG_2 BTFSS PORTB,1 GOTO BB_1 BTFSS PORTB,2 GOTO BB_2 BTFSS PORTB,3 GOTO BB_3 GOTO DREBEZG_OTZHATIYA BB_1: CLRWDT BTFSS PORTB,1 GOTO BB_123 BB_2: BTFSS PORTB,2 GOTO BB_123 BB_3: BTFSS PORTB,3 GOTO BB_123 GOTO DREBEZG_OTZHATIYA BB_123: DECFSZ REG_1,F GOTO BB_1 DECFSZ REG_2,F GOTO BB_1 RETURN ;DREBEZG ZAKONCHEN ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ END [/pre2] AleksScrewdriver ïèøåò: Ïðåäëàãàþ îáñóäèòü âàðèàíòû àëãîðèòìà äâîéíîãî êëèêà êíîïêè! Èäåÿ î÷åíü õîðîøàÿ è èíòåðåñíàÿ, íóæíî áóäåò ïîäóìàòü íàä ýòèì...



ïîëíàÿ âåðñèÿ ñòðàíèöû