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

📄 main.lis

📁 ATmega128的GPS例子
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -