📄 tmp.lis
字号:
.module tmp.c
.area text(rom, con, rel)
.even
0000 _TOSH_READ_S_PIN::
0000 ; #include <iom128v.h>
0000 ; typedef unsigned char uint8_t;
0000 ; typedef unsigned int uint16_t;
0000 ; #define TOSH_MAKE_S_OUTPUT() { DDRC |= 1<<7;}
0000 ; #define TOSH_MAKE_S_INPUT() { DDRC &= ~(1<<7);}
0000 ; #define TOSH_CLR_S_PIN() { PORTC &= ~(1<<7);}
0000 ; #define TOSH_SET_S_PIN() { PORTC |= (1<<7);}
0000 ; //unsigned char TOSH_READ_S_PIN(){return ((PINC & (1 << 7)) != 0);}
0000 ; char TOSH_READ_S_PIN(void){return (* (volatile unsigned char *)(unsigned int )& * (volatile unsigned char *)(0x13 + 0x20) & (1 << 7)) != 0;}
0000 9F9B sbis 0x13,7
0002 03C0 rjmp L2
0004 01E0 ldi R16,1
0006 10E0 ldi R17,0
0008 02C0 xjmp L3
000A L2:
000A 0027 clr R16
000C 1127 clr R17
000E L3:
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
.area lit(rom, con, rel)
0000 _table::
0000 30313233343536373839414243444546 .byte 48,49,50,51,52,53,54,55,56,57,'A,'B,'C,'D,'E,'F
0010 00 .byte 0
.area text(rom, con, rel)
; i -> R20
; count -> R16,R17
.even
0010 _delay_18b20::
0010 0E940000 xcall push_gset1
0014 ;
0014 ; const unsigned char table[]="0123456789ABCDEF";
0014 ;
0014 ; void delay_18b20(uint16_t count)
0014 ; {
0014 08C0 xjmp L6
0016 L5:
0016 ; uint8_t i;
0016 ; while(count)
0016 ; {
0016 ; i=2;
0016 42E0 ldi R20,2
0018 01C0 xjmp L9
001A L8:
001A 4A95 dec R20
001C L9:
001C 2224 clr R2
001E 2416 cp R2,R20
0020 E0F3 brlo L8
0022 0150 subi R16,1
0024 1040 sbci R17,0
0026 L6:
0026 0030 cpi R16,0
0028 0107 cpc R16,R17
002A A9F7 brne L5
002C X0:
002C L4:
002C 0E940000 xcall pop_gset1
0030 .dbline 0 ; func end
0030 0895 ret
0032 ; acke -> R20
.even
0032 _ack::
0032 0E940000 xcall push_gset1
0036 ; while(i>0) i--;
0036 ; count--;
0036 ; }
0036 ; }
0036 ;
0036 ;
0036 ; void ack()
0036 ; {
0036 ; uint8_t acke;
0036 ; TOSH_MAKE_S_OUTPUT();
0036 A79A sbi 0x14,7
0038 ; TOSH_CLR_S_PIN();
0038 AF98 cbi 0x15,7
003A ; delay_18b20(250);
003A 0AEF ldi R16,250
003C 10E0 ldi R17,0
003E E8DF xcall _delay_18b20
0040 ; TOSH_MAKE_S_OUTPUT();
0040 A79A sbi 0x14,7
0042 ; TOSH_SET_S_PIN();
0042 AF9A sbi 0x15,7
0044 ; delay_18b20(10);
0044 0AE0 ldi R16,10
0046 10E0 ldi R17,0
0048 E3DF xcall _delay_18b20
004A ;
004A ; TOSH_MAKE_S_INPUT();
004A A798 cbi 0x14,7
004C ; //delay(10);
004C ;
004C ; acke=TOSH_READ_S_PIN();
004C D9DF xcall _TOSH_READ_S_PIN
004E 402F mov R20,R16
0050 L12:
0050 ;
0050 ;
0050 ; do{
0050 ;
0050 ; acke=TOSH_READ_S_PIN();
0050 D7DF xcall _TOSH_READ_S_PIN
0052 402F mov R20,R16
0054 L13:
0054 ;
0054 ; }while(acke);
0054 4423 tst R20
0056 E1F7 brne L12
0058 ;
0058 ; delay_18b20(50);
0058 02E3 ldi R16,50
005A 10E0 ldi R17,0
005C D9DF xcall _delay_18b20
005E L11:
005E 0E940000 xcall pop_gset1
0062 .dbline 0 ; func end
0062 0895 ret
0064 ; i -> R10
0064 ; j -> R20
0064 ; cmd -> R22
.even
0064 _write::
0064 0E940000 xcall push_gset3
0068 602F mov R22,R16
006A ;
006A ;
006A ; // led0Toggle();
006A ; }
006A ;
006A ; void write(unsigned char cmd)
006A ; {
006A ; unsigned char i,j;
006A ; TOSH_MAKE_S_OUTPUT();
006A A79A sbi 0x14,7
006C ; for(j=0;j<=7;j++)
006C 4427 clr R20
006E 18C0 xjmp L19
0070 L16:
0070 ; {
0070 ; i=cmd&0x01;
0070 862F mov R24,R22
0072 8170 andi R24,1
0074 A82E mov R10,R24
0076 ; if(i==0x01)
0076 8130 cpi R24,1
0078 49F4 brne L20
007A ; {
007A ; TOSH_CLR_S_PIN();
007A AF98 cbi 0x15,7
007C ; delay_18b20(1);
007C 01E0 ldi R16,1
007E 10E0 ldi R17,0
0080 C7DF xcall _delay_18b20
0082 ; TOSH_SET_S_PIN();
0082 AF9A sbi 0x15,7
0084 ; delay_18b20(20);
0084 04E1 ldi R16,20
0086 10E0 ldi R17,0
0088 C3DF xcall _delay_18b20
008A ; }
008A 08C0 xjmp L21
008C L20:
008C ; else
008C ; {
008C ; TOSH_CLR_S_PIN();
008C AF98 cbi 0x15,7
008E ; delay_18b20(20);
008E 04E1 ldi R16,20
0090 10E0 ldi R17,0
0092 BEDF xcall _delay_18b20
0094 ; TOSH_SET_S_PIN();
0094 AF9A sbi 0x15,7
0096 ; delay_18b20(1);
0096 01E0 ldi R16,1
0098 10E0 ldi R17,0
009A BADF xcall _delay_18b20
009C ; }
009C L21:
009C 6695 lsr R22
009E L17:
009E 4395 inc R20
00A0 L19:
00A0 87E0 ldi R24,7
00A2 8417 cp R24,R20
00A4 28F7 brsh L16
00A6 L15:
00A6 0E940000 xcall pop_gset3
00AA .dbline 0 ; func end
00AA 0895 ret
00AC ; byte -> R20
00AC ; i -> R22
00AC ; temp -> R10
.even
00AC _read::
00AC 0E940000 xcall push_gset3
00B0 ; cmd=cmd>>1;
00B0 ; }
00B0 ; }
00B0 ;
00B0 ; unsigned char read()
00B0 ; {
00B0 ; unsigned char i,byte,temp;
00B0 ; byte=0x00;
00B0 4427 clr R20
00B2 ; for(i=0;i<8;i++)
00B2 6627 clr R22
00B4 1AC0 xjmp L26
00B6 L23:
00B6 ; {
00B6 ; TOSH_MAKE_S_OUTPUT();
00B6 A79A sbi 0x14,7
00B8 ; TOSH_CLR_S_PIN();
00B8 AF98 cbi 0x15,7
00BA ; delay_18b20(3);
00BA 03E0 ldi R16,3
00BC 10E0 ldi R17,0
00BE A8DF xcall _delay_18b20
00C0 ; TOSH_SET_S_PIN();
00C0 AF9A sbi 0x15,7
00C2 ; TOSH_MAKE_S_INPUT();
00C2 A798 cbi 0x14,7
00C4 ; //delay(1);
00C4 ; temp=TOSH_READ_S_PIN();//less than 500ns above 2.5V
00C4 9DDF xcall _TOSH_READ_S_PIN
00C6 A02E mov R10,R16
00C8 ; temp=temp&0x01;
00C8 8A2D mov R24,R10
00CA 8170 andi R24,1
00CC A82E mov R10,R24
00CE ; if(temp!=0x00)
00CE 8823 tst R24
00D0 09F0 breq L27
00D2 ; byte|=0x80;
00D2 4068 ori R20,128
00D4 L27:
00D4 ; if(i<7)
00D4 6730 cpi R22,7
00D6 08F4 brsh L29
00D8 ; byte=byte>>1;
00D8 4695 lsr R20
00DA L29:
00DA 02E3 ldi R16,50
00DC 10E0 ldi R17,0
00DE 98DF xcall _delay_18b20
00E0 A79A sbi 0x14,7
00E2 05E0 ldi R16,5
00E4 10E0 ldi R17,0
00E6 94DF xcall _delay_18b20
00E8 L24:
00E8 6395 inc R22
00EA L26:
00EA 6830 cpi R22,8
00EC 20F3 brlo L23
00EE ; delay_18b20(50);
00EE ; TOSH_MAKE_S_OUTPUT();
00EE ; delay_18b20(5);
00EE ; }
00EE ; return byte;
00EE 042F mov R16,R20
00F0 L22:
00F0 0E940000 xcall pop_gset3
00F4 .dbline 0 ; func end
00F4 0895 ret
00F6 ; i -> R20
00F6 ; p -> R22,R23
.even
00F6 _match::
00F6 0E940000 xcall push_gset2
00FA B801 movw R22,R16
00FC ; }
00FC ;
00FC ; void match(unsigned char *p)
00FC ; {
00FC ; unsigned char i;
00FC ; ack();
00FC 9ADF xcall _ack
00FE ; write(0x55);
00FE 05E5 ldi R16,85
0100 B1DF xcall _write
0102 ; for(i=0;i<8;i++)
0102 4427 clr R20
0104 07C0 xjmp L35
0106 L32:
0106 E42F mov R30,R20
0108 FF27 clr R31
010A E60F add R30,R22
010C F71F adc R31,R23
010E 0081 ldd R16,z+0
0110 A9DF xcall _write
0112 L33:
0112 4395 inc R20
0114 L35:
0114 4830 cpi R20,8
0116 B8F3 brlo L32
0118 L31:
0118 0E940000 xcall pop_gset2
011C .dbline 0 ; func end
011C 0895 ret
011E ; j -> R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -