📄 发射.lis
字号:
.module _发射.c
.area text(rom, con, rel)
0000 .dbfile F:\915M\发射\发射.c
.area vector(rom, abs)
.org 18
0012 89C0 rjmp _TIM0_ovf
.area text(rom, con, rel)
0000 .dbfile F:\915M\发射\发射.c
.area data(ram, con, rel)
0000 .dbfile F:\915M\发射\发射.c
0000 _n::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile F:\915M\发射\发射.c
0002 .dbsym e n _n i
.area text(rom, con, rel)
0000 .dbfile F:\915M\发射\发射.c
0000 .dbfunc e Delay_ms _Delay_ms fV
0000 ; i -> R10
0000 ; p -> R20
0000 ; amS -> R16
.even
0000 _Delay_ms::
0000 AA92 st -y,R10
0002 4A93 st -y,R20
0004 .dbline -1
0004 .dbline 61
0004 ; #include <iom8v.h>
0004 ; #include <macros.h>
0004 ; #include <stdio.h>
0004 ;
0004 ; #define DDR_IN 0
0004 ; #define DDR_OUT 1
0004 ;
0004 ; #define PORT_SEL PORTB
0004 ; #define PIN_SEL PINB
0004 ; #define DDR_SEL DDRB
0004 ;
0004 ; #define PORT_SDI PORTB
0004 ; #define PIN_SDI PINB
0004 ; #define DDR_SDI DDRB
0004 ;
0004 ; #define PORT_SCK PORTB
0004 ; #define PIN_SCK PINB
0004 ; #define DDR_SCK DDRB
0004 ;
0004 ; #define PORT_SDO PORTB
0004 ; #define PIN_SDO PINB
0004 ; #define DDR_SDO DDRB
0004 ;
0004 ; #define PB7 7
0004 ; #define PB6 6
0004 ; #define RFXX_SCK 5
0004 ; #define RFXX_SDO 4
0004 ; #define RFXX_SDI 3
0004 ; #define RFXX_SEL 2
0004 ; #define RFXX_DATA 1
0004 ; #define PB0 0
0004 ;
0004 ; #define SEL_OUTPUT() DDR_SEL|=(1<<RFXX_SEL)
0004 ; #define HI_SEL() PORT_SEL|=(1<<RFXX_SEL)
0004 ; #define LOW_SEL() PORT_SEL&=~(1<<RFXX_SEL)
0004 ;
0004 ; #define SDI_OUTPUT() DDR_SDI|=(1<<RFXX_SDI)
0004 ; #define HI_SDI() PORT_SDI|=(1<<RFXX_SDI)
0004 ; #define LOW_SDI() PORT_SDI&=~(1<<RFXX_SDI)
0004 ;
0004 ; #define SDO_INPUT() DDR_SDO&=~(1<<RFXX_SDO)
0004 ; #define SDO_HI() PIN_SDO&=(1<<RFXX_SDO)
0004 ; #define SCK_OUTPUT() DDR_SCK|=(1<<RFXX_SCK)
0004 ; #define HI_SCK() PORT_SCK|=(1<<RFXX_SCK)
0004 ; #define LOW_SCK() PORT_SCK&=~(1<<RFXX_SCK)
0004 ;
0004 ; #pragma interrupt_handler TIM0_ovf:10
0004 ;
0004 ; #define baud 19200
0004 ; #define fosc 8000000
0004 ;
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ;
0004 ; uint n=0;
0004 ; uchar ch0,ch1,ch2,ch3; //j,k,l,m;
0004 ; uchar adc_mux; //AD通道
0004 ;
0004 ; /*延时*/
0004 ; void Delay_ms(unsigned char amS)
0004 ; {
0004 .dbline 63
0004 ; uchar i,p;
0004 ; for(i=0;i<amS;i++)
0004 AA24 clr R10
0006 06C0 rjmp L5
0008 L2:
0008 .dbline 64
0008 ; for(p=0;p<200;p++)
0008 4427 clr R20
000A 01C0 rjmp L9
000C L6:
000C .dbline 65
000C ; ;
000C L7:
000C .dbline 64
000C 4395 inc R20
000E L9:
000E .dbline 64
000E 483C cpi R20,200
0010 E8F3 brlo L6
0012 X0:
0012 L3:
0012 .dbline 63
0012 A394 inc R10
0014 L5:
0014 .dbline 63
0014 A016 cp R10,R16
0016 C0F3 brlo L2
0018 X1:
0018 .dbline -2
0018 L1:
0018 .dbline 0 ; func end
0018 4991 ld R20,y+
001A A990 ld R10,y+
001C 0895 ret
001E .dbsym r i 10 c
001E .dbsym r p 20 c
001E .dbsym r amS 16 c
001E .dbend
001E .dbfunc e get_ad _get_ad fc
001E ; ad_value -> R16
.even
001E _get_ad::
001E .dbline -1
001E .dbline 70
001E ; }
001E ;
001E ; /*获取AD值*/
001E ; uchar get_ad(void)
001E ; {
001E L11:
001E .dbline 72
001E ; uchar ad_value;
001E ; while(!(ADCSRA & (1 << ADIF))); //等待
001E L12:
001E .dbline 72
001E 349B sbis 0x6,4
0020 FECF rjmp L11
0022 X2:
0022 .dbline 73
0022 ; ad_value = ADCH;
0022 05B1 in R16,0x5
0024 .dbline 74
0024 ; ADCSRA &= ~(1 << ADIF); //清标志
0024 3498 cbi 0x6,4
0026 .dbline 75
0026 ; return ad_value;
0026 .dbline -2
0026 L10:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbsym r ad_value 16 c
0028 .dbend
0028 .dbfunc e start_AD _start_AD fV
.even
0028 _start_AD::
0028 AA92 st -y,R10
002A .dbline -1
002A .dbline 80
002A ; }
002A ;
002A ; /*AD变换开始*/
002A ; void start_AD(void)
002A ; {
002A .dbline 81
002A ; adc_mux=0; //AD通道0
002A 2224 clr R2
002C 20920000 sts _adc_mux,R2
0030 .dbline 82
0030 ; ADMUX = (1<<REFS0)|(1<<ADLAR)|(adc_mux&0x0f); //取VCC为参考值,AD0模拟变量输入
0030 822D mov R24,R2
0032 8F70 andi R24,15
0034 8066 ori R24,96
0036 87B9 out 0x7,R24
0038 .dbline 83
0038 ; ADCSRA|=0xC0; //AD转换启动
0038 86B1 in R24,0x6
003A 806C ori R24,192
003C 86B9 out 0x6,R24
003E .dbline 84
003E ; ch0=get_ad();
003E EFDF rcall _get_ad
0040 00930400 sts _ch0,R16
0044 .dbline 86
0044 ;
0044 ; adc_mux=1; //AD通道1
0044 81E0 ldi R24,1
0046 80930000 sts _adc_mux,R24
004A .dbline 87
004A ; ADMUX = (1<<REFS0)|(1<<ADLAR)|(adc_mux&0x0f);
004A 8F70 andi R24,15
004C 8066 ori R24,96
004E 87B9 out 0x7,R24
0050 .dbline 88
0050 ; ADCSRA|=0xC0; //AD转换启动
0050 86B1 in R24,0x6
0052 806C ori R24,192
0054 86B9 out 0x6,R24
0056 .dbline 89
0056 ; ch1=get_ad();
0056 E3DF rcall _get_ad
0058 00930300 sts _ch1,R16
005C .dbline 91
005C ;
005C ; adc_mux=2; //AD通道2
005C 82E0 ldi R24,2
005E 80930000 sts _adc_mux,R24
0062 .dbline 92
0062 ; ADMUX = (1<<REFS0)|(1<<ADLAR)|(adc_mux&0x0f);
0062 8F70 andi R24,15
0064 8066 ori R24,96
0066 87B9 out 0x7,R24
0068 .dbline 93
0068 ; ADCSRA|=0xC0; //AD转换启动
0068 86B1 in R24,0x6
006A 806C ori R24,192
006C 86B9 out 0x6,R24
006E .dbline 94
006E ; ch2=get_ad();
006E D7DF rcall _get_ad
0070 A02E mov R10,R16
0072 A0920200 sts _ch2,R10
0076 .dbline 96
0076 ;
0076 ; adc_mux=3; //AD通道3
0076 83E0 ldi R24,3
0078 80930000 sts _adc_mux,R24
007C .dbline 97
007C ; ADMUX = (1<<REFS0)|(1<<ADLAR)|(adc_mux&0x0f);
007C 8F70 andi R24,15
007E 8066 ori R24,96
0080 87B9 out 0x7,R24
0082 .dbline 98
0082 ; ADCSRA|=0xC0; //AD转换启动
0082 86B1 in R24,0x6
0084 806C ori R24,192
0086 86B9 out 0x6,R24
0088 .dbline 99
0088 ; ch3=get_ad();
0088 CADF rcall _get_ad
008A A02E mov R10,R16
008C A0920100 sts _ch3,R10
0090 .dbline -2
0090 L14:
0090 .dbline 0 ; func end
0090 A990 ld R10,y+
0092 0895 ret
0094 .dbend
0094 .dbfunc e RFXX_WRT_CMD _RFXX_WRT_CMD fV
0094 ; temp -> R20,R21
0094 ; i -> R22
0094 ; aCmd -> R16,R17
.even
0094 _RFXX_WRT_CMD::
0094 00D0 rcall push_xgsetF000
0096 .dbline -1
0096 .dbline 104
0096 ; }
0096 ;
0096 ; /*发射数据写入*/
0096 ; void RFXX_WRT_CMD(uint aCmd)
0096 ; {
0096 .dbline 107
0096 ; uchar i;
0096 ; uint temp;
0096 ; LOW_SCK();
0096 C598 cbi 0x18,5
0098 .dbline 108
0098 ; LOW_SEL();
0098 C298 cbi 0x18,2
009A .dbline 109
009A ; for(i=0;i<16;i++)
009A 6627 clr R22
009C 12C0 rjmp L19
009E L16:
009E .dbline 110
009E ; {
009E .dbline 111
009E ; temp<<=1;
009E 440F lsl R20
00A0 551F rol R21
00A2 .dbline 112
00A2 ; if(SDO_HI())
00A2 86B3 in R24,0x16
00A4 8071 andi R24,16
00A6 86BB out 0x16,R24
00A8 8823 tst R24
00AA 09F0 breq L20
00AC X3:
00AC .dbline 113
00AC ; { temp|=0x0001; }
00AC .dbline 113
00AC 4160 ori R20,1
00AE .dbline 113
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -