📄 main.lis
字号:
03B6 01E0 ldi R16,1
03B8 EEDE xcall _Hzk_Dis_Words
03BA .dbline 180
03BA ; Hzk_Dis_Words(2,1," ");
03BA 80E0 ldi R24,<L91
03BC 90E0 ldi R25,>L91
03BE 9983 std y+1,R25
03C0 8883 std y+0,R24
03C2 21E0 ldi R18,1
03C4 02E0 ldi R16,2
03C6 E7DE xcall _Hzk_Dis_Words
03C8 .dbline -2
03C8 L90:
03C8 .dbline 0 ; func end
03C8 2296 adiw R28,2
03CA 0895 ret
03CC .dbend
.area lit(rom, con, rel)
0000 _COS_TAB::
0000 6464 .byte 'd,'d
0002 6464 .byte 'd,'d
0004 6463 .byte 'd,'c
0006 6363 .byte 'c,'c
0008 6362 .byte 'c,'b
000A 6262 .byte 'b,'b
000C 6161 .byte 'a,'a
000E 6160 .byte 'a,96
0010 605F .byte 96,95
0012 5F5E .byte 95,94
0014 5D5D .byte 93,93
0016 5C5B .byte 92,91
0018 5B5A .byte 91,'Z
001A 5958 .byte 'Y,'X
001C 5757 .byte 'W,'W
001E 5655 .byte 'V,'U
0020 5453 .byte 'T,'S
0022 5251 .byte 'R,'Q
0024 504F .byte 'P,'O
0026 4E4D .byte 'N,'M
0028 4B4A .byte 'K,'J
002A 4948 .byte 'I,'H
002C 4745 .byte 'G,'E
002E 4443 .byte 'D,'C
0030 4240 .byte 'B,64
0032 3F3E .byte 63,62
0034 3C3B .byte 60,59
0036 3938 .byte 57,56
0038 3735 .byte 55,53
003A 3432 .byte 52,50
003C 312F .byte 49,47
003E 2D2C .byte 45,44
0040 2A29 .byte 42,41
0042 2726 .byte 39,38
0044 2422 .byte 36,34
0046 211F .byte 33,31
0048 1D1C .byte 29,28
004A 1A18 .byte 26,24
004C 1715 .byte 23,21
004E 1311 .byte 19,17
0050 100E .byte 16,14
0052 0C0B .byte 12,11
0054 0907 .byte 9,7
0056 0504 .byte 5,4
0058 0200 .byte 2,0
005A .dbfile D:\SOURCE~1\gps20080503\main.c
005A .dbsym e COS_TAB _COS_TAB A[90:90]kc
.area text(rom, con, rel)
03CC .dbfile D:\SOURCE~1\gps20080503\main.c
03CC .dbfunc e main _main fV
03CC ; i -> <dead>
.even
03CC _main::
03CC 2C97 sbiw R28,12
03CE .dbline -1
03CE .dbline 42
03CE ; //ICC-AVR application builder : 2007-11-21
03CE ; // Target : M16
03CE ; // Crystal: 8.0000Mhz
03CE ;
03CE ; /****************** SMG12232ZK串行接口程序******************
03CE ; * Title : Accessing to LCD-CONTROLLER
03CE ; * Date : 2007.10.18
03CE ; * Support telephone:
03CE ; * Support fax :
03CE ; * Create by :
03CE ; * DESCRIPTION:This subroutine shows how to write data to LCD-CONTROLLER
03CE ; *******************************************************************/
03CE ;
03CE ; #include <iom16v.h> //ATMEGA48头文件
03CE ; #include <macros.h> //宏定义
03CE ; //#include <math.h>
03CE ; #include "define.h" //端口定义
03CE ; #include "initrialm16.h"//初始化mcu
03CE ; #include "delay.h" //延时程序
03CE ; #include "smg12232zk.h" //122*32点阵屏驱动程序
03CE ;
03CE ;
03CE ; void Get_Key(void);
03CE ; void Get_GPRMC_data(void);//提取GPRMC数据
03CE ; long Get_Area(long x1,long y1,long x2,long y2);
03CE ;
03CE ;
03CE ; Byte const COS_TAB[90]=
03CE ; {
03CE ; 100,100,100,100,100,99, 99, 99, 99, 98,
03CE ; 98, 98, 97, 97, 97, 96, 96, 95, 95, 94,
03CE ; 93, 93, 92, 91, 91, 90, 89, 88, 87, 87,
03CE ; 86, 85, 84, 83, 82, 81, 80, 79, 78, 77,
03CE ; 75, 74, 73, 72, 71, 69, 68, 67, 66, 64,
03CE ; 63, 62, 60, 59, 57, 56, 55, 53, 52, 50,
03CE ; 49, 47, 45, 44, 42, 41, 39, 38, 36, 34,
03CE ; 33, 31, 29, 28, 26, 24, 23, 21, 19, 17,
03CE ; 16, 14, 12, 11, 9, 7, 5, 4, 2, 0
03CE ; };
03CE ;
03CE ; void main(void)
03CE ; {
03CE .dbline 44
03CE ; Word i;
03CE ; Init_Devices();
03CE 18DE xcall _Init_Devices
03D0 .dbline 45
03D0 ; Lcd_Reset();
03D0 9CDF xcall _Lcd_Reset
03D2 17C3 xjmp L94
03D4 L93:
03D4 .dbline 47
03D4 ; while(1)
03D4 ; {
03D4 .dbline 48
03D4 ; Get_Key();
03D4 19D3 xcall _Get_Key
03D6 .dbline 49
03D6 ; if(key != 0)
03D6 20900900 lds R2,_key
03DA 2220 tst R2
03DC D1F0 breq L96
03DE X26:
03DE .dbline 50
03DE ; {
03DE .dbline 51
03DE ; switch(key)
03DE A22C mov R10,R2
03E0 BB24 clr R11
03E2 C501 movw R24,R10
03E4 8130 cpi R24,1
03E6 E0E0 ldi R30,0
03E8 9E07 cpc R25,R30
03EA 29F0 breq L101
03EC X27:
03EC 8230 cpi R24,2
03EE E0E0 ldi R30,0
03F0 9E07 cpc R25,R30
03F2 29F0 breq L102
03F4 X28:
03F4 07C0 xjmp L99
03F6 L101:
03F6 .dbline 53
03F6 ; {
03F6 ; case 1: flag_area = 1;break;//开始测量
03F6 81E0 ldi R24,1
03F8 8093D400 sts _flag_area,R24
03FC .dbline 53
03FC 03C0 xjmp L99
03FE L102:
03FE .dbline 54
03FE ; case 2: flag_area = 2;break;
03FE 82E0 ldi R24,2
0400 8093D400 sts _flag_area,R24
0404 .dbline 54
0404 .dbline 55
0404 ; default:break;
0404 L99:
0404 .dbline 57
0404 ; }
0404 ; key_dis = key;
0404 20900900 lds R2,_key
0408 20920800 sts _key_dis,R2
040C .dbline 58
040C ; key = 0;
040C 2224 clr R2
040E 20920900 sts _key,R2
0412 .dbline 59
0412 ; }
0412 L96:
0412 .dbline 60
0412 ; if(flag_area == 0)
0412 2090D400 lds R2,_flag_area
0416 2220 tst R2
0418 11F5 brne L103
041A X29:
041A .dbline 61
041A ; {
041A .dbline 62
041A ; Hzk_Dis_Data(1,1,latitude,9);
041A 89E0 ldi R24,9
041C 8C83 std y+4,R24
041E 40901801 lds R4,_latitude+2
0422 50901901 lds R5,_latitude+2+1
0426 20901601 lds R2,_latitude
042A 30901701 lds R3,_latitude+1
042E 2882 std y+0,R2
0430 3982 std y+1,R3
0432 4A82 std y+2,R4
0434 5B82 std y+3,R5
0436 21E0 ldi R18,1
0438 01E0 ldi R16,1
043A 05DF xcall _Hzk_Dis_Data
043C .dbline 63
043C ; Hzk_Dis_Data(2,1,longitude,9);
043C 89E0 ldi R24,9
043E 8C83 std y+4,R24
0440 40901401 lds R4,_longitude+2
0444 50901501 lds R5,_longitude+2+1
0448 20901201 lds R2,_longitude
044C 30901301 lds R3,_longitude+1
0450 2882 std y+0,R2
0452 3982 std y+1,R3
0454 4A82 std y+2,R4
0456 5B82 std y+3,R5
0458 21E0 ldi R18,1
045A 02E0 ldi R16,2
045C F4DE xcall _Hzk_Dis_Data
045E .dbline 64
045E ; }
045E L103:
045E .dbline 65
045E ; if(flag_area == 1)
045E 8091D400 lds R24,_flag_area
0462 8130 cpi R24,1
0464 09F0 breq X41
0466 47C0 xjmp L105
0468 X41:
0468 X30:
0468 .dbline 66
0468 ; {
0468 .dbline 67
0468 ; x0_longitude = longitude;//保存0点的坐标
0468 40901401 lds R4,_longitude+2
046C 50901501 lds R5,_longitude+2+1
0470 20901201 lds R2,_longitude
0474 30901301 lds R3,_longitude+1
0478 30920A01 sts _x0_longitude+1,R3
047C 20920901 sts _x0_longitude,R2
0480 50920C01 sts _x0_longitude+2+1,R5
0484 40920B01 sts _x0_longitude+2,R4
0488 .dbline 68
0488 ; y0_latitude = latitude;
0488 40901801 lds R4,_latitude+2
048C 50901901 lds R5,_latitude+2+1
0490 20901601 lds R2,_latitude
0494 30901701 lds R3,_latitude+1
0498 30920601 sts _y0_latitude+1,R3
049C 20920501 sts _y0_latitude,R2
04A0 50920801 sts _y0_latitude+2+1,R5
04A4 40920701 sts _y0_latitude+2,R4
04A8 .dbline 69
04A8 ; x1_post = 0;
04A8 40E0 ldi R20,0
04AA 50E0 ldi R21,0
04AC 60E0 ldi R22,0
04AE 70E0 ldi R23,0
04B0 5093FA00 sts _x1_post+1,R21
04B4 4093F900 sts _x1_post,R20
04B8 7093FC00 sts _x1_post+2+1,R23
04BC 6093FB00 sts _x1_post+2,R22
04C0 .dbline 70
04C0 ; y1_post = 0;
04C0 40E0 ldi R20,0
04C2 50E0 ldi R21,0
04C4 60E0 ldi R22,0
04C6 70E0 ldi R23,0
04C8 5093F600 sts _y1_post+1,R21
04CC 4093F500 sts _y1_post,R20
04D0 7093F800 sts _y1_post+2+1,R23
04D4 6093F700 sts _y1_post+2,R22
04D8 .dbline 71
04D8 ; area = 0;
04D8 40E0 ldi R20,0
04DA 50E0 ldi R21,0
04DC 60E0 ldi R22,0
04DE 70E0 ldi R23,0
04E0 5093DA00 sts _area+1,R21
04E4 4093D900 sts _area,R20
04E8 7093DC00 sts _area+2+1,R23
04EC 6093DB00 sts _area+2,R22
04F0 .dbline 72
04F0 ; flag_area = 3;//测量开始
04F0 83E0 ldi R24,3
04F2 8093D400 sts _flag_area,R24
04F6 .dbline 73
04F6 ; }
04F6 L105:
04F6 .dbline 74
04F6 ; if(flag_area == 3)
04F6 8091D400 lds R24,_flag_area
04FA 8330 cpi R24,3
04FC 09F0 breq X42
04FE 90C1 xjmp L107
0500 X42:
0500 X31:
0500 .dbline 75
0500 ; {
0500 .dbline 77
0500 ; //计算本次的相对坐标
0500 ; xishu = PI2RDIV360*COS_TAB[latitude/1000000-1]/100000;
0500 40E4 ldi R20,64
0502 52E4 ldi R21,66
0504 6FE0 ldi R22,15
0506 70E0 ldi R23,0
0508 20911801 lds R18,_latitude+2
050C 30911901 lds R19,_latitude+2+1
0510 00911601 lds R16,_latitude
0514 10911701 lds R17,_latitude+1
0518 7A93 st -y,R23
051A 6A93 st -y,R22
051C 5A93 st -y,R21
051E 4A93 st -y,R20
0520 0E940000 xcall div32u
0524 1801 movw R2,R16
0526 2901 movw R4,R18
0528 41E0 ldi R20,1
052A 50E0 ldi R21,0
052C 60E0 ldi R22,0
052E 70E0 ldi R23,0
0530 241A sub R2,R20
0532 350A sbc R3,R21
0534 460A sbc R4,R22
05
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -