📄 gps.lst
字号:
__text_start:
__start:
BDC EFCF LDI R28,0xFF
BDD E1D0 LDI R29,0x10
BDE BFCD OUT 0x3D,R28
BDF BFDE OUT 0x3E,R29
BE0 51C0 SUBI R28,0x10
BE1 40D0 SBCI R29,0
BE2 EA0A LDI R16,0xAA
BE3 8308 STD Y+0,R16
BE4 2400 CLR R0
BE5 E0E0 LDI R30,0
BE6 E0F1 LDI R31,1
BE7 E015 LDI R17,5
BE8 31E6 CPI R30,0x16
BE9 07F1 CPC R31,R17
BEA F011 BEQ 0x0BED
BEB 9201 ST R0,Z+
BEC CFFB RJMP 0x0BE8
BED 8300 STD Z+0,R16
BEE EBE8 LDI R30,0xB8
BEF E1F7 LDI R31,0x17
BF0 E0A0 LDI R26,0
BF1 E0B1 LDI R27,1
BF2 E117 LDI R17,0x17
BF3 E000 LDI R16,0
BF4 BF0B OUT 0x3B,R16
BF5 3BE8 CPI R30,0xB8
BF6 07F1 CPC R31,R17
BF7 F021 BEQ 0x0BFC
BF8 95C8 LPM
BF9 9631 ADIW R30,1
BFA 920D ST R0,X+
BFB CFF9 RJMP 0x0BF5
BFC 940E 0EEF CALL _main
_exit:
BFE CFFF RJMP _exit
FILE: D:\SOURCE~1\手持gps测量仪\delay.h
(0001) #ifndef _DELAY_H
(0002) #define _DELAY_H
(0003)
(0004) // mcu:avr crystal=8MHz
(0005)
(0006) /**************************************************************
(0007) **函数功能:延时1us
(0008) **输入参数:无
(0009) **返回值:无
(0010) **在本函数外定义变量:无
(0011) **调用的函数:NOP()
(0012) **************************************************************/
(0013) void Delay_1us(void);
(0014)
(0015) /**************************************************************
(0016) **函数功能:us级延时
(0017) **输入参数:xus:延时us数
(0018) **返回值:无
(0019) **在本函数外定义变量:无
(0020) **调用的函数:Delay_1us()
(0021) **************************************************************/
(0022) void Delay_Us(unsigned char xus);
(0023)
(0024) /**************************************************************
(0025) **函数功能:延时1ms
(0026) **输入参数:无
(0027) **返回值:无
(0028) **在本函数外定义变量:无
(0029) **调用的函数:NOP()
(0030) **************************************************************/
(0031) void Delay_1ms(void);
(0032)
(0033) /**************************************************************
(0034) **函数功能:ms级延时
(0035) **输入参数:xms:延时ms数
(0036) **返回值:无
(0037) **在本函数外定义变量:无
(0038) **调用的函数:Delay_1ms()
(0039) **************************************************************/
(0040) void Delay_Ms(unsigned int xms);
(0041)
(0042) /**************************************************************
(0043) **函数功能:10us级延时
(0044) **输入参数:x10us:延时x10us数
(0045) **返回值:无
(0046) **在本函数外定义变量:无
(0047) **调用的函数:无
(0048) **************************************************************/
(0049) void Delay10us(Word x10us);
(0050)
(0051)
(0052) void Delay_1us()
(0053) {
(0054) NOP();
_Delay_1us:
BFF 0000 NOP
C00 9508 RET
_Delay_Us:
i --> R10
xus --> R12
C01 92AA ST R10,-Y
C02 92CA ST R12,-Y
C03 2EC0 MOV R12,R16
(0055) }
(0056)
(0057) void Delay_Us(unsigned char xus)
(0058) {
(0059) unsigned char i;
(0060) for(i=0;i<xus;i++)
C04 24AA CLR R10
C05 C002 RJMP 0x0C08
(0061) Delay_1us();
C06 DFF8 RCALL _Delay_1us
C07 94A3 INC R10
C08 14AC CP R10,R12
C09 F3E0 BCS 0x0C06
C0A 90C9 LD R12,Y+
C0B 90A9 LD R10,Y+
C0C 9508 RET
(0062) }
(0063)
(0064) void Delay_1ms(void)
(0065) {
(0066) unsigned int i;
(0067) for(i=0;i<1142;i++)
_Delay_1ms:
i --> R16
C0D 2700 CLR R16
C0E 2711 CLR R17
C0F C002 RJMP 0x0C12
C10 5F0F SUBI R16,0xFF
C11 4F1F SBCI R17,0xFF
C12 3706 CPI R16,0x76
C13 E0E4 LDI R30,4
C14 071E CPC R17,R30
C15 F3D0 BCS 0x0C10
C16 9508 RET
_Delay_Ms:
i --> R20
j --> R22
xms --> R16
C17 940E 0F13 CALL push_xgsetF000
(0068) ;
(0069) }
(0070)
(0071) void Delay_Ms(Word xms) //crystal=8MHz
(0072) {
(0073) Word i,j; //variable:declare Word
(0074) for(i=0; i<xms; i++)
C19 2744 CLR R20
C1A 2755 CLR R21
C1B C014 RJMP 0x0C30
(0075) for(j=0; j<498;j++)
C1C 2766 CLR R22
C1D 2777 CLR R23
C1E C00B RJMP 0x0C2A
(0076) {
(0077) NOP();
C1F 0000 NOP
(0078) NOP();
C20 0000 NOP
(0079) NOP();
C21 0000 NOP
(0080) NOP();
C22 0000 NOP
(0081) NOP();
C23 0000 NOP
(0082) NOP();
C24 0000 NOP
(0083) NOP();
C25 0000 NOP
(0084) NOP();
C26 0000 NOP
(0085) NOP();
C27 0000 NOP
C28 5F6F SUBI R22,0xFF
C29 4F7F SBCI R23,0xFF
C2A 3F62 CPI R22,0xF2
C2B E0E1 LDI R30,1
C2C 077E CPC R23,R30
C2D F388 BCS 0x0C1F
C2E 5F4F SUBI R20,0xFF
C2F 4F5F SBCI R21,0xFF
C30 1740 CP R20,R16
C31 0751 CPC R21,R17
C32 F348 BCS 0x0C1C
C33 940C 0F18 JMP pop_xgsetF000
_Delay10us:
i --> R20
j --> R22
x10us --> R16
C35 940E 0F13 CALL push_xgsetF000
(0086) }
(0087) }
(0088)
(0089) void Delay10us(Word x10us)//crystal=8MHz
(0090) {
(0091) Word i;Byte j; //variable:declare Word
(0092) for(i=0; i<x10us; i++)
C37 2744 CLR R20
C38 2755 CLR R21
C39 C00A RJMP 0x0C44
(0093) {
(0094) for(j=0;j<2;j++)
C3A 2766 CLR R22
C3B C004 RJMP 0x0C40
(0095) {
(0096) NOP();
C3C 0000 NOP
(0097) NOP();
C3D 0000 NOP
(0098) NOP();
C3E 0000 NOP
C3F 9563 INC R22
C40 3062 CPI R22,2
C41 F3D0 BCS 0x0C3C
C42 5F4F SUBI R20,0xFF
C43 4F5F SBCI R21,0xFF
C44 1740 CP R20,R16
C45 0751 CPC R21,R17
C46 F398 BCS 0x0C3A
C47 940C 0F18 JMP pop_xgsetF000
FILE: D:\SOURCE~1\手持gps测量仪\usart128.h
(0001) #ifndef _USART_H
(0002) #define _USART_H
(0003)
(0004) void Uart0_Init(void);
(0005) void Usart_tarnsmit0(Byte x);
(0006) void Uart1_Init(void);
(0007) void Usart_tarnsmit1(Byte x);
(0008)
(0009) //UART0 initialize
(0010) // desired baud rate: 9600
(0011) // actual: baud rate:9615 (0.2%)
(0012) // char size: 5 bits
(0013) // parity: Disabled
(0014) void Uart0_Init(void)
(0015) {
(0016) UCSR0B = 0x00; //disable while setting baud rate
_Uart0_Init:
C49 2422 CLR R2
C4A B82A OUT 0x0A,R2
(0017) UCSR0A = 0x00;
C4B B82B OUT 0x0B,R2
(0018) UCSR0C = 0x06;
C4C E086 LDI R24,6
C4D 9380 0095 STS 0x0095,R24
(0019) UBRR0L = 0x33; //set baud rate lo baud rate = 19200 0.2%
C4F E383 LDI R24,0x33
C50 B989 OUT 0x09,R24
(0020) UBRR0H = 0x00; //set baud rate hi
C51 9220 0090 STS 0x0090,R2
(0021) //UCSR0B = 0x98;
(0022) UCSR0B |= BIT(TXEN0) | BIT(RXEN0) | BIT(RXCIE0);
C53 B18A IN R24,0x0A
C54 6988 ORI R24,0x98
C55 B98A OUT 0x0A,R24
C56 9508 RET
(0023) }
(0024) void Usart_tarnsmit0(Byte x)
(0025) {
(0026) //等待数据寄存器空
(0027) while(!(UCSR0A&BIT(UDRE0)));//UDRE0为发送缓冲区空标志位
_Usart_tarnsmit0:
x --> R16
C57 9B5D SBIS 0x0B,5
C58 CFFE RJMP _Usart_tarnsmit0
(0028) //为1表示为空
(0029) UDR0=x;
C59 B90C OUT 0x0C,R16
C5A 9508 RET
(0030) }
(0031)
(0032)
(0033) //UART1 initialize
(0034) // desired baud rate:9600
(0035) // actual baud rate:9615 (0.2%)
(0036) // char size: 5 bits
(0037) // parity: Disabled
(0038) void Uart1_Init(void)
(0039) {
(0040) UCSR1B = 0x00; //disable while setting baud rate
_Uart1_Init:
C5B 2422 CLR R2
C5C 9220 009A STS 0x009A,R2
(0041) UCSR1A = 0x00;
C5E 9220 009B STS 0x009B,R2
(0042) UCSR1C = 0x06;
C60 E086 LDI R24,6
C61 9380 009D STS 0x009D,R24
(0043) UBRR1L = 0x33; //set baud rate lo baud rate = 9600 0.2%
C63 E383 LDI R24,0x33
C64 9380 0099 STS 0x0099,R24
(0044) UBRR1H = 0x00; //set baud rate hi
C66 9220 0098 STS 0x0098,R2
(0045) //UCSR1B = 0x98;
(0046) UCSR1B |= BIT(TXEN1) | BIT(RXEN1) | BIT(RXCIE1);
C68 9180 009A LDS R24,0x009A
C6A 6988 ORI R24,0x98
C6B 9380 009A STS 0x009A,R24
C6D 9508 RET
(0047) }
(0048) void Usart_tarnsmit1(Byte x)
(0049) {
(0050) //等待数据寄存器空
(0051) while(!(UCSR1A&BIT(UDRE1)));//UDRE0为发送缓冲区空标志位
_Usart_tarnsmit1:
x --> R16
C6E 9020 009B LDS R2,0x009B
C70 FE25 SBRS R2,5
C71 CFFC RJMP _Usart_tarnsmit1
(0052) //为1表示为空
(0053) UDR1=x;
C72 9300 009C STS 0x009C,R16
C74 9508 RET
FILE: D:\SOURCE~1\手持gps测量仪\initrialm128.h
(0001) //ICC-AVR application builder : 2007-6-27 10:26:06
(0002) // Target : M8
(0003) // Crystal: 8.0000Mhz
(0004)
(0005) /**************初始化m8函数***************/
(0006) #ifndef Initrial_M128_H
(0007) #define Initrial_M128_H
(0008)
(0009) void Init_Devices(void);
(0010) void Port_Init(void);
(0011) void Init_Devices(void);
(0012) void Timer0_Init(void);
(0013)
(0014) void Timer0_Init(void);
(0015)
(0016) //void Timer1_Init(void);
(0017) //void Timer1_Ovf_Isr(void);
(0018)
(0019) //call this routine to initialize all peripherals
(0020) void Init_Devices(void)
(0021) {
(0022) //stop errant interrupts until set up
(0023) CLI(); //disable all interrupts
_Init_Devices:
C75 94F8 BCLR 7
(0024) Port_Init();
C76 D002 RCALL _Port_Init
(0025) //Timer0_Init();
(0026) //Uart0_Init();
(0027) //Uart1_Init();
(0028) SEI(); //re-enable interrupts
C77 9478 BSET 7
C78 9508 RET
(0029) //all peripherals are now initialized
(0030) }
(0031)
(0032) void Port_Init(void)
(0033) {
(0034) PORTA = 0xff;
_Port_Init:
C79 EF8F LDI R24,0xFF
C7A BB8B OUT 0x1B,R24
(0035) DDRA = 0xff;
C7B BB8A OUT 0x1A,R24
(0036) PORTB = 0xff;
C7C BB88 OUT 0x18,R24
(0037) DDRB = 0xff;
C7D BB87 OUT 0x17,R24
(0038) PORTC = 0xff; //m103 output only
C7E BB85 OUT 0x15,R24
(0039) DDRC = 0xff;
C7F BB84 OUT 0x14,R24
(0040) PORTD = 0xff;
C80 BB82 OUT 0x12,R24
(0041) DDRD = 0xff;
C81 BB81 OUT 0x11,R24
(0042) PORTE = 0xff;
C82 B983 OUT 0x03,R24
(0043) DDRE = 0xff;
C83 B982 OUT 0x02,R24
(0044) PORTF = 0xff;
C84 9380 0062 STS 0x0062,R24
(0045) DDRF = 0xff;
C86 9380 0061 STS 0x0061,R24
(0046) PORTG = 0xff;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -