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

📄 doo1.lis

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module DOO1.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-2129\DOO1.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-2129\DOO1.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-2129\DOO1.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-2129\DOO1.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-2129\DOO1.c
 0006                   .dbsym e bcount _bcount c
 0006           _powbit::
 0006                   .blkb 1
                        .area idata
 0006 00                .byte 0
                        .area data(ram, con, rel)
 0007                   .dbfile E:\abol\file\EMD\programme\EM-PB-2129\DOO1.c
 0007                   .dbsym e powbit _powbit c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\abol\file\EMD\programme\EM-PB-2129\DOO1.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 29
 0000           ; #include <iot13v.h>
 0000           ; #include <macros.h>
 0000           ; #include "delay.h"
 0000           ; #include "eeprom.h"
 0000           ; #define uchar unsigned char
 0000           ; #define unit unsigned int
 0000           ; #define ulong unsigned long
 0000           ; #define xtal 9.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,powbit=0;
 0000           ; unsigned char DECODER_CODE1,DECODER_CODE0; 
 0000           ; unsigned char data[3];        
 0000           ; unsigned char dataf[3];
 0000           ; 
 0000           ; 
 0000           ; //PB3是控制输出端口!
 0000           ; #define       POWER_ON                PORTB |= (1 << PB2)     //打开输出
 0000           ; #define       POWER_OFF               PORTB &= ~(1 << PB2)    //关闭输出      
 0000           ; #define       LED_ON                  PORTB |= (1 << PB0)     //打开输出
 0000           ; #define       LED_OFF                 PORTB &= ~(1 << PB0)    //关闭输出
 0000           ; #define       RF_ON                   PORTB |= (1 << PB1)     //打开输出
 0000           ; #define       RF_OFF                  PORTB &= ~(1 << PB1)    //关闭输出
 0000           ; 
 0000           ; //端口初始化
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 30
 0000           ;       PORTB = 0x38;   //输入设置有上拉电阻,输出预设低电平
 0000 88E3              ldi R24,56
 0002 88BB              out 0x18,R24
 0004                   .dbline 31
 0004           ;       DDRB  = 0x07;   //PB4输入,PB3输出
 0004 87E0              ldi R24,7
 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 35
 000A           ; } 
 000A           ; //转换初始化
 000A           ; void adc_init(void)
 000A           ; {
 000A                   .dbline 36
 000A           ;       ADCSRA=0x00;    //vcc作为模拟参考电压
 000A 2224              clr R2
 000C 26B8              out 0x6,R2
 000E                   .dbline 38
 000E           ; 
 000E           ;       ADCMUX = 0x03;  //选择ADC2通道
 000E 83E0              ldi R24,3
 0010 87B9              out 0x7,R24
 0012                   .dbline 39
 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 43
 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 watchdog_init _watchdog_init fV
                        .even
 0020           _watchdog_init::
 0020                   .dbline -1
 0020                   .dbline 48
 0020           ;       
 0020           ; }
 0020           ; //看门狗初始化
 0020           ; void watchdog_init(void)
 0020           ; {
 0020                   .dbline 49
 0020           ;  WDR(); //this prevents a timout on enabling
 0020 A895              wdr
 0022                   .dbline 50
 0022           ;  WDTCR=(1<<WDCE)|(1<<WDE);
 0022 88E1              ldi R24,24
 0024 81BD              out 0x21,R24
 0026                   .dbline 51
 0026           ;  WDTCR=(0<<WDE);
 0026 2224              clr R2
 0028 21BC              out 0x21,R2
 002A                   .dbline -2
 002A           L3:
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbend
 002C                   .dbfunc e GetADC _GetADC fi
 002C           ;      adc_value -> R20,R21
                        .even
 002C           _GetADC::
 002C 00D0              rcall push_gset1
 002E                   .dbline -1
 002E                   .dbline 56
 002E           ; }
 002E           ; 
 002E           ; //从AD口读入一个值
 002E           ; unsigned int GetADC(void)
 002E           ; {
 002E                   .dbline 60
 002E           ; 
 002E           ; unsigned int  adc_value;
 002E           ; 
 002E           ;       ADC = 0;
 002E 2224              clr R2
 0030 3324              clr R3
 0032 35B8              out 0x5,R3
 0034 24B8              out 0x4,R2
 0036                   .dbline 61
 0036           ;       ADCSRA  |=  (1 << ADSC);        //启动AD转换
 0036 369A              sbi 0x6,6
 0038                   .dbline 63
 0038           ; 
 0038           ;       del(10);
 0038 0AE0              ldi R16,10
 003A 10E0              ldi R17,0
 003C 00D0              rcall _del
 003E           L5:
 003E                   .dbline 64
 003E           L6:
 003E                   .dbline 64
 003E           ;       while(!(ADCSRA&(BIT(ADIF))));////ADIF=4, 表示若ADCSR的第5位置为1,则中断AD转换
 003E 349B              sbis 0x6,4
 0040 FECF              rjmp L5
 0042                   .dbline 67
 0042           ;       //loop_until_bit_is_set(ADCSRA, ADIF);//等待AD转换结束
 0042           ; 
 0042           ;       ADCSRA |= (1 << ADIF);          //写1清除标志位
 0042 349A              sbi 0x6,4
 0044                   .dbline 69
 0044           ; 
 0044           ;       adc_value = ADC;                //读转换结果
 0044 44B1              in R20,0x4
 0046 55B1              in R21,0x5
 0048                   .dbline 71
 0048           ; 
 0048           ;       return adc_value;
 0048 042F              mov R16,R20
 004A 152F              mov R17,R21
 004C                   .dbline -2
 004C           L4:
 004C 00D0              rcall pop_gset1
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbsym r adc_value 20 i
 0050                   .dbend
 0050                   .dbfunc e CRC3 _CRC3 fc
 0050           ;              i -> <dead>
 0050           ;              j -> R22
 0050           ;            len -> R10
 0050           ;           data -> R20,R21
                        .even
 0050           _CRC3::
 0050 00D0              rcall push_gset3
 0052 A22E              mov R10,R18
 0054 402F              mov R20,R16
 0056 512F              mov R21,R17
 0058                   .dbline -1
 0058                   .dbline 85
 0058           ; }
 0058           ; 
 0058           ; 
 0058           ; /****************************************** 
 0058           ; CRC3校验函数  
 0058           ; 输  入:        ptr需要进行校验的数据包  
 0058           ;         len需要校验的数据包字节数  
 0058           ; 输  出:        校验码; 
 0058           ; 调  用:        无; 
 0058           ; 被调用:        从机协议打包函数; 
 0058           ; 功  能:        将一给定的数据包进行CRC3校验给调用者返回校验码  
 0058           ; ******************************************/ 
 0058           ; unsigned char CRC3(unsigned char *data, unsigned char len) 
 0058           ; { 
 0058                   .dbline 88
 0058           ;     unsigned char i; 
 0058           ;     unsigned char j; 
 0058           ;     j = 0; 
 0058 6627              clr R22
 005A                   .dbline 89
 005A           ;       crc=0;
 005A 2224              clr R2
 005C 20920F00          sts _crc,R2
 0060 34C0              rjmp L10
 0062           L9:
 0062                   .dbline 92
 0062           ; 
 0062           ;     while(len) 
 0062           ;     { 
 0062                   .dbline 94
 0062           ;         /*多项式除法*/ 
 0062           ;         if(*data & (0x80>>j))  //如果该位为1 
 0062 262F              mov R18,R22
 0064 3327              clr R19
 0066 00E8              ldi R16,128
 0068 10E0              ldi R17,0
 006A 00D0              rcall asr16
 006C E42F              mov R30,R20
 006E F52F              mov R31,R21
 0070 2080              ldd R2,z+0
 0072 3324              clr R3
 0074 2022              and R2,R16
 0076 3122              and R3,R17
 0078 2220              tst R2
 007A 11F4              brne X0
 007C 3320              tst R3
 007E 29F0              breq L12
 0080           X0:
 0080                   .dbline 95
 0080           ;             crc |= 0x01;  //则在余数尾部添1否则添0 
 0080 80910F00          lds R24,_crc
 0084 8160              ori R24,1
 0086 80930F00          sts _crc,R24
 008A           L12:
 008A                   .dbline 96
 008A           ;         if(crc >= 0x8) 
 008A 80910F00          lds R24,_crc
 008E 8830              cpi R24,8
 0090 30F0              brlo L14
 0092                   .dbline 97
 0092           ;             crc ^= 11; 
 0092 8BE0              ldi R24,11
 0094 20900F00          lds R2,_crc
 0098 2826              eor R2,R24
 009A 20920F00          sts _crc,R2
 009E           L14:
 009E                   .dbline 98
 009E           ;         crc <<= 1; 
 009E 20900F00          lds R2,_crc
 00A2 220C              lsl R2
 00A4 20920F00          sts _crc,R2
 00A8                   .dbline 99
 00A8           ;         j++;
 00A8 6395              inc R22
 00AA                   .dbline 100
 00AA           ;               if(len==1)
 00AA 8A2D              mov R24,R10
 00AC 8130              cpi R24,1
 00AE 39F4              brne L16
 00B0                   .dbline 101
 00B0           ;               {
 00B0                   .dbline 102
 00B0           ;                 if(j == 7) 
 00B0 6730              cpi R22,7
 00B2 59F4              brne L17
 00B4                   .dbline 103
 00B4           ;          { 
 00B4                   .dbline 104
 00B4           ;             j = 0; 
 00B4 6627              clr R22
 00B6                   .dbline 105
 00B6           ;             data++; 
 00B6 4F5F              subi R20,255  ; offset = 1
 00B8 5F4F              sbci R21,255
 00BA                   .dbline 106
 00BA           ;             len--; 
 00BA AA94              dec R10
 00BC                   .dbline 107
 00BC           ;          }
 00BC                   .dbline 108
 00BC           ;               }
 00BC 06C0              rjmp L17
 00BE           L16:
 00BE                   .dbline 110
 00BE           ;               else
 00BE           ;               { 
 00BE                   .dbline 111
 00BE           ;          if(j == 8) 
 00BE 6830              cpi R22,8
 00C0 21F4              brne L20
 00C2                   .dbline 112
 00C2           ;          { 
 00C2                   .dbline 113
 00C2           ;             j = 0; 
 00C2 6627              clr R22
 00C4                   .dbline 114
 00C4           ;             data++; 
 00C4 4F5F              subi R20,255  ; offset = 1
 00C6 5F4F              sbci R21,255
 00C8                   .dbline 115
 00C8           ;             len--; 
 00C8 AA94              dec R10
 00CA                   .dbline 116
 00CA           ;          }
 00CA           L20:
 00CA                   .dbline 117
 00CA           ;               }
 00CA           L17:
 00CA                   .dbline 118
 00CA           L10:
 00CA                   .dbline 91
 00CA AA20              tst R10
 00CC 51F6              brne L9
 00CE                   .dbline 119
 00CE           ;       }
 00CE           ;     return(crc);       
 00CE 00910F00          lds R16,_crc
 00D2                   .dbline -2
 00D2           L8:
 00D2 00D0              rcall pop_gset3
 00D4                   .dbline 0 ; func end
 00D4 0895              ret
 00D6                   .dbsym l i 1 c
 00D6                   .dbsym r j 22 c

⌨️ 快捷键说明

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