{"id":85,"date":"2010-04-18T23:51:44","date_gmt":"2010-04-18T20:51:44","guid":{"rendered":"http:\/\/anyram.net\/blog_ru\/?p=85"},"modified":"2015-04-11T22:24:59","modified_gmt":"2015-04-11T19:24:59","slug":"%d0%bf%d0%b5%d1%80%d0%b5%d1%85%d0%be%d0%b4%d0%bd%d0%b8%d0%ba-i-button-ds1990-uart","status":"publish","type":"post","link":"https:\/\/anyram.net\/blog_ru\/?p=85","title":{"rendered":"\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a i-Button (DS1990) &#8212; UART"},"content":{"rendered":"<p style=\"text-align: justify;\">\u041a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0447\u0438\u0442\u0430\u0442\u044c ID \u0438\u0437 DS1990 \u00a0\u042f \u0441\u0434\u0435\u043b\u0430\u043b \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043c\u0430\u043a\u0435\u0442 \u0440\u0438\u0434\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u0442\u0430\u0435\u0442 &#171;\u0442\u0430\u0431\u043b\u0435\u0442\u043a\u0443&#187; \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u043f\u043e UART-\u0443 ASCII \u043a\u043e\u0434\u043e\u043c (4800 \u0431\u043e\u0434 8N1). \u0412\u043e\u0442 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0441\u0445\u0435\u043c\u043a\u0430 \u043c\u0430\u043a\u0435\u0442\u0430.<br \/>\n<img decoding=\"async\" src=\"http:\/\/anyram.net\/blog_ru\/wp-content\/uploads\/2015\/04\/ib2uart.gif\" alt=\"\u0421\u0445\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a\u0430 i-Button - UART \u043d\u0430 tiny13\" \/><\/p>\n<p><!--more--><br \/>\n\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a\u0430.<\/p>\n<pre>;* ************************************************************************ *\r\n;* ib2uart.avr, iButton-reader                                              *\r\n;* ************************************************************************ *\r\n.include \"tn13def.inc\"\r\n\r\n; \u043e\u043f\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\r\n; BODLEVEL1=BODLEVEL0=SUT0=CKSEL0=0\r\n\r\n.set    VERSION = 0x0100\r\n\r\n; * \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 *\r\n; \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u043b\u0435\/\u043a\u043b\u044e\u0447\u043e\u043c\r\n.equ    CTBout  = PORTB         ; \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0440\u0442\r\n.equ    CTBcfg  = DDRB          ; \u043f\u043e\u0440\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u043e\u0432\r\n.equ    CTBin   = PINB          ; \u043f\u043e\u0440\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434\u043e\u0432\r\n.equ    ledpin  = 0             ; LED\r\n.equ    ibpin   = 1             ; ib-\u0432\u0445\u043e\u0434\/\u0432\u044b\u0445\u043e\u0434\r\n.equ    ouart   = 4             ; UART-\u0432\u044b\u0445\u043e\u0434\r\n\r\n.equ    CTB_CFG = (1&lt;&lt;ouart)|(1&lt;&lt;ledpin)|(0&lt;&lt;ibpin) ; \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 cfg \u043f\u043e\u0440\u0442\u0430\r\n.equ    CTB_OUT = (1&lt;&lt;ouart)|(1&lt;&lt;ledpin)|(0&lt;&lt;ibpin) ; \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 out \u043f\u043e\u0440\u0442\u0430\r\n\r\n; \u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u041c\u0413\u0446\r\n#define XCLK        9.6\r\n.equ    CN2MKS      = INT((2*XCLK-7)\/3)             ; \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 2\u043c\u043a\u0441\r\n.equ    CN5MKS      = INT((5*XCLK-9)\/3)             ; \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 5\u043c\u043a\u0441\r\n.equ    CN10MKS     = INT((10*XCLK-9)\/3)            ; \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 10\u043c\u043a\u0441\r\n.equ    CN50MKS     = INT((50*XCLK-9)\/3)            ; \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 50\u043c\u043a\u0441\r\n\r\n; * \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 *\r\n.def    cnt         = R19\r\n.def    tmp1        = R20           ; \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n.def    tmp2        = R21           ; \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n.def    tmp3        = R22           ; \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n.def    tmp4        = R23           ; \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\r\n\r\n.equ    store       = SRAM_START    ; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c\r\n\r\n; \u043a\u043e\u0434\u043e\u0432\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\r\n        .cseg                   ; CODE segment\r\n;______________________________________________________________\r\n; \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \r\n        .org    0\r\n        rjmp    main_rstcold    ; \u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u0431\u0440\u043e\u0441\u0430\r\n        .org    INT0addr\r\n        reti                    ; External Interrupt 0\r\n        .org    PCI0addr\r\n        reti                    ; External Interrupt Request 0\r\n        .org    OVF0addr\r\n        reti                    ; Timer\/Counter0 Overflow\r\n        .org    ERDYaddr\r\n        reti                    ; EEPROM Ready\r\n        .org    ACIaddr\r\n        reti                    ; Analog Comparator\r\n        .org    OC0Aaddr\r\n        reti                    ; Timer\/Counter0 Compare Match 0A\r\n        .org    OC0Baddr\r\n        reti                    ; Timer\/Counter Compare Match B\r\n        .org    WDTaddr\r\n        reti                    ; Watchdog Time-out\r\n        .org    ADCCaddr\r\n        reti                    ; ADC Conversion Complete\r\n\r\n\r\n;______________________________________________________________\r\nuart_del:\r\n; \u043f\u043e\u043b\u0443\u0431\u0438\u0442\u043d\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\r\n        ldi     tmp3,251        ; \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\nuart_dlp:\r\n        nop                     ; \u043f\u0443\u0441\u0442\u043e\u0439 \u0442\u0430\u043a\u0442\r\n        dec     tmp3            ; \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\n        brne    uart_dlp        ; \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\r\n        ret                     ; \u0432\u044b\u0445\u043e\u0434\r\n\r\n;______________________________________________________________\r\npr_hex:\r\n        push    tmp1            ;\r\n        swap    tmp1            ;\r\n        rcall   pr_dig          ;\r\n        pop     tmp1            ;\r\npr_dig:\r\n        andi    tmp1,0x0F       ;\r\n        cpi     tmp1,0x0A       ;\r\n        ldi     tmp2,0x30       ;\r\n        brcs    prhx_coring     ;\r\n        ldi     tmp2,0x37       ;\r\nprhx_coring:\r\n        add     tmp1,tmp2       ;\r\n;______________________________________________________________\r\nputchar:\r\n; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0431\u0430\u0439\u0442\u0430 TxByte\r\n;  IN - tmp1\r\n; OUT - \u043d\u0435\u0442\r\n; CHG - \u043d\u0435\u0442\r\n        push    tmp1            ;\r\n        push    tmp2            ;\r\n        push    tmp3            ;\r\n\r\n        ldi     tmp2,1+8+1      ; 1+8+1\r\n        com     tmp1            ;\r\n        sec                     ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0442\u0430\u0440\u0442-\u0431\u0438\u0442\u0430\r\nputc_pblm:\r\n        brcc    putc_psbm       ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043b\u043e\u0433.1, \u0435\u0441\u043b\u0438 C==0\r\n        cbi     CTBout,ouart    ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043b\u043e\u0433.0\r\n        rjmp    putc_pbdm       ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0435\r\nputc_psbm:\r\n        sbi     CTBout,ouart    ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043b\u043e\u0433.1\r\n        nop                     ; \u0442\u0430\u043a\u0442\u043e\u0432\u043e\u0435 \u0443\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435\r\nputc_pbdm:\r\n        rcall   uart_del        ;\r\n        rcall   uart_del        ;\r\n\r\n        lsr     tmp1            ; \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432 C \u0441\u043b\u0435\u0434.\u0431\u0438\u0442\u0430\r\n        dec     tmp2            ; \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u0431\u0438\u0442\u043e\u0432\r\n        brne    putc_pblm       ; \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0446\u0438\u043a\u043b\u0430 \u043f\u043e\u0441\u044b\u043b\u043a\u0438 \u0431\u0438\u0442\u043e\u0432\r\n\r\n        pop     tmp3            ;\r\n        pop     tmp2            ;\r\n        pop     tmp1            ;\r\n\r\n        ret                     ; \u0432\u044b\u0445\u043e\u0434\r\n\r\n;______________________________________________________________\r\n; \u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u0431\u0440\u043e\u0441\u0430, \u0432\u0445\u043e\u0434 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0435\u0442\u043b\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b\r\nmain_rstcold:\r\n; \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430\r\n        cli                     ; \u0437\u0430\u043f\u0440\u0435\u0442 \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439\r\n; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0442\u0435\u043a\u0430 \r\n        ldi     tmp1,low(RAMEND); \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0441\u0442\u0435\u043a\u0430\r\n        out     SPL,tmp1        ; \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\r\n; \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430 B\r\n;  PB5   PB4   PB3   PB2   PB1   PB0\r\n;                    LED   RSL   RSH\r\n;  in    in    in    out   out   out\r\n        ldi     tmp1,CTB_OUT    ; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u043f\u043e\u0440\u0442\u0430\r\n        out     CTBout,tmp1     ; \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u0432 \u043f\u043e\u0440\u0442\r\n        ldi     tmp1,CTB_CFG    ; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u043f\u043e\u0440\u0442\u0430 B\r\n        out     CTBcfg,tmp1     ; \u0437\u0430\u043f\u0438\u0441\u044c I\/O \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438\r\n; \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443\/\u0441\u0440\u0435\u0437\u0443\r\n        ldi     tmp1,(1&lt;&lt;ISC00) ; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f int0 \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443\/\u0441\u0440\u0435\u0437\u0443\r\n        out     MCUCR,tmp1      ; \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\r\n        ldi     tmp1,(0&lt;&lt;INT0)  ; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f int0\r\n        out     GIMSK,tmp1      ; \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 int0\r\n\r\n        sei                     ; \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439\r\nmain_loop:\r\n        rcall   ib_reset        ; \u0441\u0431\u0440\u043e\u0441 i-button\r\n        brts    main_present    ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u0435\u0441\u043b\u0438 i-button \u043e\u0442\u0432\u0435\u0442\u0438\u043b\r\n        rjmp    main_loop       ; \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u043d\u0438\u0435\r\nmain_present:\r\n        ldi     tmp1,0x33       ; \u043a\u043e\u0434 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0447\u0442\u0435\u043d\u0438\u044f ID DS1990\r\n        rcall   ib_write        ; \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 i-button\r\n\r\n        ldi     ZL,low(store)   ; \u043c\u043b.\u0431\u0430\u0439\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c\u0441\u044f ID\r\n        ldi     ZH,high(store)  ; \u0441\u0442.\u0431\u0430\u0439\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c\u0441\u044f ID\r\n        ldi     tmp4,0x08       ; \u043a\u043e\u043b-\u0432\u043e \u0431\u0430\u0439\u0442 ID\r\nmain_rdlp:\r\n        push    tmp4            ; \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a\r\n        rcall   ib_read         ; \u0447\u0438\u0442\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 i-button\r\n        pop     tmp4            ; \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0431\u0430\u0439\u0442\u043e\u0432\r\n        push    tmp4            ; \u043e\u043f\u044f\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a\r\n        cpi     tmp4,8          ; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, 1\u0439 \u043b\u0438 \u0431\u0430\u0439\u0442 \u0441\u0447\u0438\u0442\u0430\u043d\r\n        brne    main_famskp     ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u0435\u0441\u043b\u0438 \u043d\u0435 1\u0439\r\n        cpi     tmp1,0x00       ; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1\u0433\u043e \u0431\u0430\u0439\u0442\u0430 ==0?\r\n        brne    main_famskp     ; \u0435\u0441\u043b\u0438 !=0, \u0442\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0447\u0442\u0435\u043d\u0438\u0435 (\u0441\u0447\u0438\u0442\u0430\u043d \u0442\u0438\u043f \u0418\u041c\u0421)\r\n        rjmp    main_loop       ; \u0435\u0441\u043b\u0438 ==0, \u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u043a\u043d\u0443\u043b\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \r\nmain_famskp:\r\n        st      Z+,tmp1         ; \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0431\u0430\u0439\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438\r\n        pop     tmp4            ; \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0431\u0430\u0439\u0442\u043e\u0432\r\n        dec     tmp4            ; \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\r\n        brne    main_rdlp       ; \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0446\u0438\u043a\u043b \u0447\u0442\u0435\u043d\u0438\u044f ID\r\n; \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 CRC        \r\n        ldi     ZL,low(store)   ; \u043c\u043b.\u0431\u0430\u0439\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 ID\r\n        ldi     ZH,high(store)  ; \u0441\u0442.\u0431\u0430\u0439\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 ID\r\n        clr     tmp2            ; \u0441\u0431\u0440\u043e\u0441 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f CRC\r\n        ldi     tmp4,0x07       ; \u043a\u043e\u043b-\u0432\u043e \u0431\u0430\u0439\u0442, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f CRC\r\nmain_crclp:        \r\n        ld      tmp1,Z+         ; \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0431\u0430\u0439\u0442\r\n        rcall   update_crc      ; \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 CRC\r\n        dec     tmp4            ; \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0431\u0430\u0439\u0442\u043e\u0432\r\n        brne    main_crclp      ; \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 \u043f\u043e\u0434\u0441\u0447\u0451\u0442\u0430 CRC\r\n        ld      tmp1,Z          ; \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c CRC, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0447\u0438\u0442\u0430\u043d\u043e \u0438\u0437 i-button\r\n        eor     tmp1,tmp2       ; \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0441 CRC, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b\u0438 \u0441\u0430\u043c\u0438\r\n        breq    main_crcok      ; \u043f\u0435\u0440\u0435\u0445\u043e\u0434, \u0435\u0441\u043b\u0438 CRC \u0441\u043e\u0432\u043f\u0430\u043b\u0438\r\n        rjmp    main_loop       ; \u0435\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0430 CRC - \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0435\u0442\u043b\u044e\r\n\r\nmain_crcok:\r\n        ldi     ZL,low(store)   ; \u043c\u043b.\u0431\u0430\u0439\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 ID\r\n        ldi     ZH,high(store)  ; \u0441\u0442.\u0431\u0430\u0439\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 ID\r\n        ldi     tmp4,0x08       ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043b-\u0432\u0430 \u0431\u0430\u0439\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u043f\u043e UART\r\n        cli                     ; \u0437\u0430\u043f\u0440\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439\r\nmain_txlp:\r\n        push    tmp4            ; \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\r\n        ld      tmp1,Z+         ; \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 ID \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438\r\n        rcall   pr_hex          ; \u0432\u044b\u0432\u043e\u0434 \u0431\u0430\u0439\u0442\u0430 \u043f\u043e UART\r\n        ldi     tmp1,0x20       ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\r\n        rcall   putchar         ; \u0432\u044b\u0432\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e UART\r\n        pop     tmp4            ; \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430\r\n        dec     tmp4            ; \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442\r\n        brne    main_txlp       ; \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u0435\u0442\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 ID\r\n\r\n        ldi     tmp1,0x0D       ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u0434\u0430 \"\\r\"\r\n        rcall   putchar         ; \u0432\u044b\u0432\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e UART\r\n        ldi     tmp1,0x0A       ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u0434\u0430 \"\\n\"\r\n        rcall   putchar         ; \u0432\u044b\u0432\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e UART\r\n        sei                     ; \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439\r\n\r\n        cbi     CTBout,ledpin   ; \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\r\n        ldi     tmp3,0x02       ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0442.\u0431\u0430\u0439\u0442\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\nledp_lph:\r\n        clr     tmp2            ;~1, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \"\u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e\" \u0431\u0430\u0439\u0442\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\nledp_lpm:\r\n        clr     tmp1            ;~1, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \"\u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e\" \u0431\u0430\u0439\u0442\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\nledp_lpl:\r\n        nop                     ;~1, \u043f\u0443\u0441\u0442\u044b\u0435 \u0442\u0430\u043a\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0442\u044f\u043d\u0443\u043b\u0430\u0441\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 :)\r\n        nop                     ;\r\n        dec     tmp1            ;~1, \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u043c\u043b.\u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\n        brne    ledp_lpl        ;~2\/1, \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u043b.\u0446\u0438\u043a\u043b\u0430\r\n        dec     tmp2            ;~1, \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0441\u0440.\u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\n        brne    ledp_lpm        ;~2\/1, \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0440.\u0446\u0438\u043a\u043b\u0430\r\n        dec     tmp3            ;~1, \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0441\u0442.\u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\n        brne    ledp_lph        ;~2\/1, \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0442.\u0446\u0438\u043a\u043b\u0430\r\n        sbi     CTBout,ledpin   ; \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\r\n\r\n        rjmp    main_loop       ; \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0435\u0442\u043b\u044e\r\n\r\n;______________________________________________________________\r\n; \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 50\u043c\u043a\u0441, 3(rcall)+2(rjmp) + 3*n+4(ret) \r\ndel50mks:\r\n        ldi     tmp4,CN50MKS    ;~1, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b 50\u043c\u043a\u0441\r\n        rjmp    del2_lp         ;~2, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043f\u0435\u0442\u043b\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\n;______________________________________________________________\r\n; \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 10\u043c\u043a\u0441, 3(rcall)+2(rjmp) + 3*n+4(ret) \r\ndel10mks:\r\n        ldi     tmp4,CN10MKS    ;~1, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b 10\u043c\u043a\u0441\r\n        rjmp    del2_lp         ;~2, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043f\u0435\u0442\u043b\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\n;______________________________________________________________\r\n; \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 5\u043c\u043a\u0441, 3(rcall)+2(rjmp) + 3*n+4(ret) \r\ndel5mks:\r\n        ldi     tmp4,CN5MKS     ;~1, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b 5\u043c\u043a\u0441\r\n        rjmp    del2_lp         ;~2, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043f\u0435\u0442\u043b\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\n;______________________________________________________________\r\n; \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 2\u043c\u043a\u0441, 3(rcall)+2(rjmp) + 3*n+4(ret) \r\ndel2mks:\r\n        ldi     tmp4,CN2MKS     ;~1, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b 5\u043c\u043a\u0441\r\ndel2_lp:\r\n        dec     tmp4            ;~1, \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438\r\n        brne    del2_lp         ;~2\/1, \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0446\u0438\u043a\u043b\u0430\r\n        ret                     ;~4, \u0432\u044b\u0445\u043e\u0434\r\n;______________________________________________________________\r\n; \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 90\u043c\u043a\u0441 \r\ndel90mks:\r\n        rcall       del10mks        ; 10mks\r\n        rcall       del10mks        ; 10mks\r\n        rcall       del10mks        ; 10mks\r\n        rcall       del10mks        ; 10mks\r\n        rjmp        del50mks        ; 50mks\r\n;______________________________________________________________\r\n; \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 100\u043c\u043a\u0441 \r\ndel100mks:\r\n        rcall       del50mks        ; 50mks\r\n        rjmp        del50mks        ; 50mks\r\n;______________________________________________________________\r\n; \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 500\u043c\u043a\u0441 \r\ndel500mks:\r\n        rcall       del100mks       ; 100mks\r\n        rcall       del100mks       ; 100mks\r\n        rcall       del100mks       ; 100mks\r\n        rcall       del100mks       ; 100mks\r\n        rjmp        del100mks       ; 100mks\r\n\r\n;______________________________________________________________\r\n; \u0447\u0442\u0435\u043d\u0438\u0435\/\u0437\u0430\u043f\u0438\u0441\u044c \u0431\u0430\u0439\u0442\u0430 \u0432 i-button; \u0437\u0430\u043f\u0438\u0441\u044c 0xFF - \u044d\u0442\u043e \u0447\u0442\u0435\u043d\u0438\u0435\r\n; \u0438\u0437 i-button, \u0442\u0430\u0439\u043c\u0441\u043b\u043e\u0442\u044b \u0442\u0435 \u0436\u0435\r\nib_read:\r\n        ldi     tmp1,0xFF       ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\r\nib_write:\r\n        mov     tmp2,tmp1       ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 (\u0437\u0434\u0435\u0441\u044c tmp2 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440)\r\n        ldi     tmp3,8          ; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0431\u0438\u0442\u043e\u0432\r\nrwloop:\r\n        sbi     CTBcfg,ibpin    ; \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043b\u0438\u043d\u0438\u044e i-button \u0432 0\r\n        rcall   del2mks         ; \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 2\u043c\u043a\u0441\r\n        ror     tmp2            ; \u0431\u0438\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u043a\u0430\u0435\u043c \u0432 C\r\n        brcc    wrzero          ; \u0435\u0441\u043b\u0438 \u0431\u0438\u0442 ==0, \u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043b\u0438\u043d\u0438\u044e i-button ==0\r\n        cbi     CTBcfg,ibpin    ; \u0435\u0441\u043b\u0438 \u0431\u0438\u0442 ==0, \u0442\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u043b\u0438\u043d\u0438\u044e i-button ==1\r\nwrzero:\r\n        rcall   del10mks        ; \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u043e\u0434 \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u0432 1\r\n        clc                     ; \u0432 C \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0438\u0442\u0430, \u043f\u043e\u0441\u043b\u0430\u043d\u043d\u043e\u0433\u043e i-button\r\n        sbic    CTBin,ibpin     ; \u0447\u0438\u0442\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 i-button\r\n        sec                     ; \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c C==1, \u0435\u0441\u043b\u0438 \u0432\u044b\u0432\u043e\u0434 i-button==1\r\n        ror     tmp1            ; \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 tmp1\r\n        rcall   del50mks        ; \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0432\u0440\u0435\u043c\u044f \u0442\u0430\u0439\u043c-\u0441\u043b\u043e\u0442\u0430\r\n        cbi     CTBcfg,ibpin    ; \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c (\u043e\u0442\u043f\u0443\u0441\u043a\u0430\u0435\u043c) \u043b\u0438\u043d\u0438\u044e i-button: \r\n        rcall   del2mks         ; \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 2\u043c\u043a\u0441, \u0447\u0442\u043e\u0431\u044b \u043b\u0438\u043d\u0438\u044f \u043f\u043e\u0434\u043d\u044f\u043b\u0430\u0441\u044c\r\n        dec     tmp3            ; \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 \u0431\u0438\u0442\u043e\u0432\r\n        brne    rwloop          ; \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 \u0447\u0442\u0435\u043d\u0438\u044f 8\u043c\u0438 \u0431\u0438\u0442\u043e\u0432\r\n        ret                     ; \u0432\u044b\u0445\u043e\u0434\r\n\r\n;______________________________________________________________\r\n; \u0441\u0431\u0440\u043e\u0441 i-button \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \"\u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f\" i-button \u043d\u0430 \u043b\u0438\u043d\u0438\u0438,\r\n; \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 T\r\nib_reset:\r\n        sbi     CTBcfg,ibpin    ; \u043b\u0438\u043d\u0438\u044f i-button ==0\r\n        rcall   del500mks       ; \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430: i-button \u043e\u0431\u0435\u0441\u0442\u043e\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f\r\n        cbi     CTBcfg,ibpin    ; \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043b\u0438\u043d\u0438\u044e i-button\r\n        rcall   del90mks        ; \u0436\u0434\u0451\u043c \u0437\u0430\u0440\u044f\u0434\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442\u043e\u0440\u0430 i-button\r\n        clt                     ; \u0441\u0431\u0440\u043e\u0441 T\r\n        sbis    CTBin,ibpin     ; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0438: \u0435\u0441\u043b\u0438 i-button \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442,\r\n                                ; \u0442\u043e \u043e\u043d \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043b\u0438\u043d\u0438\u044e \u0432 0\r\n        set                     ; \u0435\u0441\u043b\u0438 \u043b\u0438\u043d\u0438\u044f \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 0, \u0442\u043e T==1, i-button \u043d\u0430 \u043b\u0438\u043d\u0438\u0438\r\n        rcall   del500mks       ; \u0436\u0434\u0451\u043c \u043f\u043e\u043a\u0430 i-button \u043e\u0442\u043f\u0443\u0441\u0442\u0438\u0442 \u043b\u0438\u043d\u0438\u044e\r\n        ret                     ; \u0432\u044b\u0445\u043e\u0434\r\n\r\n;______________________________________________________________\r\n; \u043f\u043e\u0434\u0441\u0447\u0451\u0442 \u0431\u0430\u0439\u0442\u0430 CRC\r\n; \u0432 tmp1 \u0431\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 CRC, \u0432 tmp2 \u0443\u0436\u0435 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 CRC8\r\n; \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043f\u0438\u0441\u0430\u043d \u0438\u0437 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 DS1990\r\nupdate_crc:\r\n        push    tmp3            ;\r\n        push    tmp4            ;\r\n        ldi     tmp4,8          ;\r\nupcr_lp:\r\n        mov     tmp3,tmp2       ;\r\n        eor     tmp3,tmp1       ;\r\n        sbrs    tmp3,0          ;\r\n        rjmp    upcr_zbit       ;\r\n        ldi     tmp3,0x18       ;\r\n        eor     tmp2,tmp3       ;\r\n        lsr     tmp2            ;\r\n        sbr     tmp2,(1&lt;&lt;7)     ;\r\n        rjmp    upcr_shift      ;\r\nupcr_zbit:\r\n        lsr     tmp2            ;\r\nupcr_shift:\r\n        lsr     tmp1            ;\r\n        dec     tmp4            ;\r\n        brne    upcr_lp         ;\r\n        pop     tmp4            ;\r\n        pop     tmp3            ;\r\n        ret                     ; \u0432\u044b\u0445\u043e\u0434<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0447\u0438\u0442\u0430\u0442\u044c ID \u0438\u0437 DS1990 \u00a0\u042f \u0441\u0434\u0435\u043b\u0430\u043b \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043c\u0430\u043a\u0435\u0442 \u0440\u0438\u0434\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u0442\u0430\u0435\u0442 &#171;\u0442\u0430\u0431\u043b\u0435\u0442\u043a\u0443&#187; \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u043f\u043e UART-\u0443 ASCII \u043a\u043e\u0434\u043e\u043c (4800 \u0431\u043e\u0434 8N1). \u0412\u043e\u0442 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0441\u0445\u0435\u043c\u043a\u0430 \u043c\u0430\u043a\u0435\u0442\u0430.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=\/wp\/v2\/posts\/85"}],"collection":[{"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=85"}],"version-history":[{"count":5,"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=\/wp\/v2\/posts\/85\/revisions"}],"predecessor-version":[{"id":105,"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=\/wp\/v2\/posts\/85\/revisions\/105"}],"wp:attachment":[{"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=85"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=85"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anyram.net\/blog_ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}