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

📄 210.lis

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module _210.c
                        .area data(ram, con, rel)
 0000           _mark::
 0000                   .blkb 2
                        .area idata
 0000 DC05              .word 1500
                        .area data(ram, con, rel)
 0002                   .dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
 0002                   .dbsym e mark _mark I
 0002           _flag::
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
 0003                   .dbsym e flag _flag c
 0003           _flagh::
 0003                   .blkb 1
                        .area idata
 0003 00                .byte 0
                        .area data(ram, con, rel)
 0004                   .dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
 0004                   .dbsym e flagh _flagh c
 0004           _acount::
 0004                   .blkb 1
                        .area idata
 0004 00                .byte 0
                        .area data(ram, con, rel)
 0005                   .dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
 0005                   .dbsym e acount _acount c
 0005           _bcount::
 0005                   .blkb 1
                        .area idata
 0005 00                .byte 0
                        .area data(ram, con, rel)
 0006                   .dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
 0006                   .dbsym e bcount _bcount c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 27
 0000           ; #include <iot13v.h>
 0000           ; #include <macros.h>
 0000           ; #define uchar unsigned char
 0000           ; #define unit unsigned int
 0000           ; #define ulong unsigned long
 0000           ; #define xtal 8
 0000           ; 
 0000           ; int mark=1500;        
 0000           ; 
 0000           ; unsigned int ai,aa;
 0000           ; unsigned char crc,i,j,flag=0,flagh=0,flagl,acount=0,bcount=0,PINBS;
 0000           ; unsigned char DECODER_CODE1,DECODER_CODE0; 
 0000           ; unsigned char data[3]; 
 0000           ; unsigned char dataf[3];
 0000           ; 
 0000           ; 
 0000           ; //PB3是控制输出端口!
 0000           ; #define       RF_ON                   PORTB |= (1 << PB2)     //打开输出
 0000           ; #define       RF_OFF                  PORTB &= ~(1 << PB2)    //关闭输出 
 0000           ; #define       EN_ON                   PORTB |= (1 << PB1)     //打开输出
 0000           ; #define       EN_OFF                  PORTB &= ~(1 << PB1)    //关闭输出 
 0000           ; #define DOOR_IN         PINTB =BIT(0)
 0000           ; 
 0000           ; 
 0000           ; //端口初始化
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 28
 0000           ;       PORTB = 0x29;   //输入设置有上拉电阻,输出预设低电平
 0000 89E2              ldi R24,41
 0002 88BB              out 0x18,R24
 0004                   .dbline 29
 0004           ;       DDRB  = 0x0e;   //PB4输出,PB3输入
 0004 8EE0              ldi R24,14
 0006 87BB              out 0x17,R24
 0008                   .dbline -2
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbend
 000A                   .dbfunc e adc_init _adc_init fV
                        .even
 000A           _adc_init::
 000A                   .dbline -1
 000A                   .dbline 33
 000A           ; }
 000A           ; //转换初始化
 000A           ; void adc_init(void)
 000A           ; {
 000A                   .dbline 34
 000A           ;       ADCSRA=0x00;    //
 000A 2224              clr R2
 000C 26B8              out 0x6,R2
 000E                   .dbline 36
 000E           ; 
 000E           ;       ADCMUX = 0x42;  //片内作为模拟参考电压 选择ADC2通道
 000E 82E4              ldi R24,66
 0010 87B9              out 0x7,R24
 0012                   .dbline 37
 0012           ;       ACSR = (1 << ACD);//禁用模拟比较器
 0012 80E8              ldi R24,128
 0014 90E0              ldi R25,0
 0016 99B9              out 0x9,R25
 0018 88B9              out 0x8,R24
 001A                   .dbline 41
 001A           ; 
 001A           ;       //使能ADC,终端允许,自由模式,时钟CLK/8
 001A           ;       //0x86允许转换ADEN,ADSC,时钟128分频 75KHz@9.6MHz system clock
 001A           ;       ADCSRA = (1 << ADEN) | 0x07;//| ( 1 << ADATE )
 001A 87E8              ldi R24,135
 001C 86B9              out 0x6,R24
 001E                   .dbline -2
 001E           L2:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e EEPROM_write _EEPROM_write fV
 0020           ;         ucdata -> R18
 0020           ;      uiaddress -> R16
                        .even
 0020           _EEPROM_write::
 0020                   .dbline -1
 0020                   .dbline 53
 0020           ;       
 0020           ; }
 0020           ; /*//看门狗初始化
 0020           ; void watchdog_init(void)
 0020           ; {
 0020           ;  WDR(); //this prevents a timout on enabling
 0020           ;  WDTCR=(1<<WDCE)|(1<<WDE);
 0020           ;  WDTCR=(0<<WDE);
 0020           ; }*/
 0020           ; /*            EEPROM 写入     */      
 0020           ; void EEPROM_write(unsigned char uiaddress,unsigned char ucdata)
 0020           ; {
 0020                   .dbline 54
 0020           ;  WDR();
 0020 A895              wdr
 0022           L4:
 0022                   .dbline 55
 0022           L5:
 0022                   .dbline 55
 0022           ;  while(EECR&(1<<EEWE)); /*等待上一次写操作结束*/
 0022 E199              sbic 0x1c,1
 0024 FECF              rjmp L4
 0026                   .dbline 56
 0026           ;  EEAR=uiaddress; /*设置地址寄存器*/
 0026 0EBB              out 0x1e,R16
 0028                   .dbline 57
 0028           ;  EEDR=ucdata;
 0028 2DBB              out 0x1d,R18
 002A                   .dbline 58
 002A           ;  EECR|=(1<<EEMWE);
 002A E29A              sbi 0x1c,2
 002C                   .dbline 59
 002C           ;  EECR|=(1<<EEWE); /*置位EEMWE 置位EEWE以启动写操作*/
 002C E19A              sbi 0x1c,1
 002E                   .dbline -2
 002E           L3:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbsym r ucdata 18 c
 0030                   .dbsym r uiaddress 16 c
 0030                   .dbend
 0030                   .dbfunc e EEPROM_read _EEPROM_read fc
 0030           ;      uiaddress -> R16
                        .even
 0030           _EEPROM_read::
 0030                   .dbline -1
 0030                   .dbline 64
 0030           ; }
 0030           ; 
 0030           ; /*      EEPROM 读取     */
 0030           ; unsigned char EEPROM_read(unsigned char uiaddress)
 0030           ; {
 0030           L8:
 0030                   .dbline 65
 0030           L9:
 0030                   .dbline 65
 0030           ;    while(EECR&(1<<EEWE));  /*等待上一次写操作结束*/
 0030 E199              sbic 0x1c,1
 0032 FECF              rjmp L8
 0034                   .dbline 66
 0034           ;    EEAR=uiaddress;    /*设置地址寄存器*/
 0034 0EBB              out 0x1e,R16
 0036                   .dbline 67
 0036           ;       EECR|=(1<<EERE);        /*置位EEMWE 置位EEWE以启动读操作*/ 
 0036 E09A              sbi 0x1c,0
 0038                   .dbline 68
 0038           ;       return EEDR;    /*自数据存贮器返回数据*/
 0038 0DB3              in R16,0x1d
 003A                   .dbline -2
 003A           L7:
 003A                   .dbline 0 ; func end
 003A 0895              ret
 003C                   .dbsym r uiaddress 16 c
 003C                   .dbend
 003C                   .dbfunc e del _del fV
 003C           ;           time -> R16,R17
                        .even
 003C           _del::
 003C                   .dbline -1
 003C                   .dbline 72
 003C           ; } 
 003C           ; /*            微秒级延时程序  */      
 003C           ; void del(int time)
 003C           ;        {     
 003C           L12:
 003C                   .dbline 74
 003C           ;         do
 003C           ;               {
 003C                   .dbline 75
 003C           ;                time--;
 003C 0150              subi R16,1
 003E 1040              sbci R17,0
 0040                   .dbline 76
 0040           ;               }       
 0040           L13:
 0040                   .dbline 77
 0040           ;         while (time>1);
 0040 81E0              ldi R24,1
 0042 90E0              ldi R25,0
 0044 8017              cp R24,R16
 0046 9107              cpc R25,R17
 0048 CCF3              brlt L12
 004A                   .dbline -2
 004A           L11:
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbsym r time 16 I
 004C                   .dbend
 004C                   .dbfunc e delay_1ms _delay_1ms fV
 004C           ;             i1 -> R16,R17
                        .even
 004C           _delay_1ms::
 004C                   .dbline -1
 004C                   .dbline 82
 004C           ;        }
 004C           ;        
 004C           ; /*       毫秒级延时程序       */       
 004C           ; void delay_1ms(void)
 004C           ; { unsigned int i1;
 004C                   .dbline 83
 004C           ;  for(i1=1;i1<(unsigned int)(xtal*143-2);i1++)
 004C 01E0              ldi R16,1
 004E 10E0              ldi R17,0
 0050 02C0              rjmp L19
 0052           L16:
 0052                   .dbline 84
 0052           L17:
 0052                   .dbline 83
 0052 0F5F              subi R16,255  ; offset = 1
 0054 1F4F              sbci R17,255
 0056           L19:
 0056                   .dbline 83
 0056 0637              cpi R16,118
 0058 E4E0              ldi R30,4
 005A 1E07              cpc R17,R30
 005C D0F3              brlo L16
 005E                   .dbline -2
 005E           L15:
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbsym r i1 16 i
 0060                   .dbend
 0060                   .dbfunc e delay _delay fV
 0060           ;             i2 -> R20,R21
 0060           ;              n -> R22,R23
                        .even
 0060           _delay::
 0060 00D0              rcall push_gset2
 0062 602F              mov R22,R16
 0064 712F              mov R23,R17
 0066                   .dbline -1
 0066                   .dbline 88
 0066           ;     ;
 0066           ; }
 0066           ; 
 0066           ; void delay(unsigned int n)
 0066           ; {
 0066                   .dbline 89
 0066           ;  unsigned int i2=0;
 0066 4427              clr R20
 0068 5527              clr R21
 006A 04C0              rjmp L22
 006C           L21:
 006C                   .dbline 91
 006C                   .dbline 91
 006C EFDF              rcall _delay_1ms
 006E                   .dbline 92
 006E 4F5F              subi R20,255  ; offset = 1
 0070 5F4F              sbci R21,255
 0072                   .dbline 92
 0072 A895              wdr
 0074                   .dbline 93
 0074           L22:
 0074                   .dbline 90
 0074           ;    while(i2<n)
 0074 4617              cp R20,R22
 0076 5707              cpc R21,R23
 0078 C8F3              brlo L21
 007A                   .dbline -2
 007A           L20:
 007A 00D0              rcall pop_gset2
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbsym r i2 20 i
 007E                   .dbsym r n 22 i
 007E                   .dbend
 007E                   .dbfunc e GetADC _GetADC fi
 007E           ;      adc_value -> R20,R21
                        .even
 007E           _GetADC::
 007E 00D0              rcall push_gset1
 0080                   .dbline -1
 0080                   .dbline 97
 0080           ;    {delay_1ms();
 0080           ;     i2++; WDR();
 0080           ;    }
 0080           ; }
 0080           ; //从AD口读入一个值
 0080           ; unsigned int GetADC(void)
 0080           ; {
 0080                   .dbline 100
 0080           ; 
 0080           ; unsigned int  adc_value;
 0080           ;       DDRB|=(1<<PB3);
 0080 BB9A              sbi 0x17,3
 0082                   .dbline 101
 0082           ;       PORTB&=~(1<<PB3);
 0082 C398              cbi 0x18,3
 0084                   .dbline 102

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -