⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmp.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -