📄 gsb.lis
字号:
.module gsb.c
.area text(rom, con, rel)
0000 .dbfile E:\单片机\AVR程序\GSM_M22/12864.h
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 30
0000 ; //包含所需头文件
0000 ; #include <ioM16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ;
0000 ; /*------宏定义------*/
0000 ;
0000 ;
0000 ;
0000 ;
0000 ; #include "12864.h"
0000 ; #define Rcv_cap 100 //缓冲内容不能超过200个,搜索时不会先前搜
0000 ;
0000 ; const uchar L[4] = {0x80,0x90,0x88,0x98};
0000 ; uchar Rcv[Rcv_cap+1] = "ab"; //若缓冲足够变大,要改动程序
0000 ; //const uchar AT[] = "AT\r";
0000 ; //const uchar Settxt[] = "AT+CMGF=1\r";
0000 ; uchar Sendtxt[] = "AT+CMGS=\"15986929180\"\r";
0000 ; uchar Content[] = "How are you?\x1a";
0000 ; uchar Phone[20] = ""; //11+4+4+1
0000 ; uchar CPBW[35] = "AT+CPBW=1,\"";
0000 ; uchar i_Rcv = 0;
0000 ; uchar flagend = 0;
0000 ; /*uchar key;
0000 ; uchar pbefore = 0;
0000 ; uchar pnext;*/
0000 ; uchar Stc1[] = "GSM 发信息中....";
0000 ; /*uchar Stc2[] = "电话簿:";
0000 ; uchar Stc3[] = "1.发送短信";
0000 ; uchar Stc4[] = "2.打电话";*/
0000 .dbline 31
0000 ;
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R22,R23
.even
0004 _delay_nus::
0004 0E940000 xcall push_gset2
0008 B801 movw R22,R16
000A .dbline -1
000A .dbline 34
000A ;
000A ;
000A ; //端口初始化
000A .dbline 35
000A ; void port_init(void)
000A 4427 clr R20
000C 5527 clr R21
000E .dbline 36
000E ; {
000E 03C0 xjmp L6
0010 L3:
0010 .dbline 37
0010 F7DF xcall _delay_1us
0012 L4:
0012 .dbline 36
0012 4F5F subi R20,255 ; offset = 1
0014 5F4F sbci R21,255
0016 L6:
0016 .dbline 36
0016 4617 cp R20,R22
0018 5707 cpc R21,R23
001A D0F3 brlo L3
001C .dbline -2
001C L2:
001C 0E940000 xcall pop_gset2
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r i 20 i
0022 .dbsym r n 22 i
0022 .dbend
0022 .dbfunc e delay_1ms _delay_1ms fV
0022 ; i -> R16,R17
.even
0022 _delay_1ms::
0022 .dbline -1
0022 .dbline 40
0022 ; PORTA = 0x0f;
0022 ; DDRA = 0x0f;
0022 ; PORTB = 0x00;
0022 ; DDRB = 0x00;
0022 .dbline 42
0022 0027 clr R16
0024 1127 clr R17
0026 02C0 xjmp L11
0028 L8:
0028 .dbline 42
0028 L9:
0028 .dbline 42
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L11:
002C .dbline 42
002C ; PORTC = 0x00;
002C ; DDRC = 0x00;
002C 0437 cpi R16,116
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L8
0034 .dbline -2
0034 L7:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 i
0036 .dbend
0036 .dbfunc e delay_nms _delay_nms fV
0036 ; i -> R20,R21
0036 ; n -> R22,R23
.even
0036 _delay_nms::
0036 0E940000 xcall push_gset2
003A B801 movw R22,R16
003C .dbline -1
003C .dbline 45
003C ; PORTD = 0x00;
003C ; DDRD = 0x00;
003C ; }
003C .dbline 46
003C ; /*
003C 4427 clr R20
003E 5527 clr R21
0040 .dbline 47
0040 ; //串口通信初始化
0040 03C0 xjmp L16
0042 L13:
0042 .dbline 48
0042 EFDF xcall _delay_1ms
0044 L14:
0044 .dbline 47
0044 4F5F subi R20,255 ; offset = 1
0046 5F4F sbci R21,255
0048 L16:
0048 .dbline 47
0048 4617 cp R20,R22
004A 5707 cpc R21,R23
004C D0F3 brlo L13
004E .dbline -2
004E L12:
004E 0E940000 xcall pop_gset2
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r i 20 i
0054 .dbsym r n 22 i
0054 .dbend
0054 .dbfunc e send_8bit _send_8bit fV
0054 ; i -> R20
0054 ; ch -> R22
.even
0054 _send_8bit::
0054 0E940000 xcall push_gset2
0058 602F mov R22,R16
005A .dbline -1
005A .dbline 58
005A ; void usart_init(void)//9600
005A ; {
005A ; UCSRB = 0x00;//禁止中断
005A ; UCSRA = 0x00;
005A ; UCSRC = BIT(URSEL) | 0x06;
005A ; UBRRL = 0x33;
005A ; UBRRH = 0x00;
005A ; UCSRB = 0x98;
005A ; }*/
005A ;
005A ; //串口通信初始化
005A .dbline 60
005A ; void usart_init(void) //115200
005A ; {
005A 4427 clr R20
005C 13C0 xjmp L21
005E L18:
005E .dbline 61
005E ; UCSRB = 0x00;//禁止中断
005E .dbline 61
005E DB9A sbi 0x1b,3
0060 01E0 ldi R16,1
0062 10E0 ldi R17,0
0064 CFDF xcall _delay_nus
0066 .dbline 62
0066 ; UCSRA = 0x00;
0066 062F mov R16,R22
0068 142F mov R17,R20
006A 0E940000 xcall lsl8
006E 802F mov R24,R16
0070 8078 andi R24,128
0072 11F0 breq L22
0074 .dbline 62
0074 DA9A sbi 0x1b,2
0076 01C0 xjmp L23
0078 L22:
0078 .dbline 63
0078 ; UCSRC = BIT(URSEL) | 0x06;
0078 DA98 cbi 0x1b,2
007A L23:
007A .dbline 64
007A DB98 cbi 0x1b,3
007C 01E0 ldi R16,1
007E 10E0 ldi R17,0
0080 C1DF xcall _delay_nus
0082 .dbline 65
0082 L19:
0082 .dbline 60
0082 4395 inc R20
0084 L21:
0084 .dbline 60
0084 4830 cpi R20,8
0086 58F3 brlo L18
0088 .dbline -2
0088 L17:
0088 0E940000 xcall pop_gset2
008C .dbline 0 ; func end
008C 0895 ret
008E .dbsym r i 20 c
008E .dbsym r ch 22 c
008E .dbend
008E .dbfunc e WriteData _WriteData fV
008E ; data -> R20
.even
008E _WriteData::
008E 0E940000 xcall push_gset1
0092 402F mov R20,R16
0094 .dbline -1
0094 .dbline 69
0094 ; UBRRL = 0x03;
0094 ; UBRRH = 0x00;
0094 ; UCSRB = 0x98;
0094 ; }
0094 ; void init_devices(void)
0094 ; {
0094 .dbline 70
0094 ; CLI(); //禁止所有中断
0094 D99A sbi 0x1b,1
0096 .dbline 71
0096 ; //cpu_init();
0096 0AEF ldi R16,250
0098 DDDF xcall _send_8bit
009A .dbline 72
009A ; //delay_nms(200);
009A 042F mov R16,R20
009C 007F andi R16,240
009E DADF xcall _send_8bit
00A0 .dbline 73
00A0 ; //lcm_init();
00A0 042F mov R16,R20
00A2 0F70 andi R16,#0x0F
00A4 0295 swap R16
00A6 D6DF xcall _send_8bit
00A8 .dbline 74
00A8 ; port_init();
00A8 D998 cbi 0x1b,1
00AA .dbline -2
00AA L24:
00AA 0E940000 xcall pop_gset1
00AE .dbline 0 ; func end
00AE 0895 ret
00B0 .dbsym r data 20 c
00B0 .dbend
00B0 .dbfunc e WriteCommand _WriteCommand fV
00B0 ; command -> R20
.even
00B0 _WriteCommand::
00B0 0E940000 xcall push_gset1
00B4 402F mov R20,R16
00B6 .dbline -1
00B6 .dbline 78
00B6 ; lcd12864_init();
00B6 ; usart_init();
00B6 ; SEI();//开全局中断
00B6 ; }
00B6 .dbline 79
00B6 ;
00B6 D99A sbi 0x1b,1
00B8 .dbline 80
00B8 ; //串行接收结束中断服务程序
00B8 08EF ldi R16,248
00BA CCDF xcall _send_8bit
00BC .dbline 81
00BC ; #pragma interrupt_handler usart_rx_isr:12
00BC 042F mov R16,R20
00BE 007F andi R16,240
00C0 C9DF xcall _send_8bit
00C2 .dbline 82
00C2 ; void usart_rx_isr(void)
00C2 042F mov R16,R20
00C4 0F70 andi R16,#0x0F
00C6 0295 swap R16
00C8 C5DF xcall _send_8bit
00CA .dbline 83
00CA ; {
00CA D998 cbi 0x1b,1
00CC .dbline -2
00CC L25:
00CC 0E940000 xcall pop_gset1
00D0 .dbline 0 ; func end
00D0 0895 ret
00D2 .dbsym r command 20 c
00D2 .dbend
00D2 .dbfunc e guangbiao _guangbiao fV
00D2 ; x -> R20
.even
00D2 _guangbiao::
00D2 0E940000 xcall push_gset1
00D6 402F mov R20,R16
00D8 .dbline -1
00D8 .dbline 87
00D8 ; uchar temp;
00D8 ; temp = UDR;
00D8 ; if(i_Rcv>(Rcv_cap-1))
00D8 ; {
00D8 .dbline 88
00D8 ; i_Rcv=0;
00D8 4130 cpi R20,1
00DA 19F4 brne L27
00DC .dbline 88
00DC 0FE0 ldi R16,15
00DE E8DF xcall _WriteCommand
00E0 02C0 xjmp L28
00E2 L27:
00E2 .dbline 89
00E2 0CE0 ldi R16,12
00E4 E5DF xcall _WriteCommand
00E6 L28:
00E6 .dbline -2
00E6 L26:
00E6 0E940000 xcall pop_gset1
00EA .dbline 0 ; func end
00EA 0895 ret
00EC .dbsym r x 20 c
00EC .dbend
00EC .dbfunc e Set_display_Adress _Set_display_Adress fV
00EC ; address -> R20
00EC ; x -> R22
00EC ; y -> R20
.even
00EC _Set_display_Adress::
00EC 0E940000 xcall push_gset2
00F0 622F mov R22,R18
00F2 402F mov R20,R16
00F4 .dbline -1
00F4 .dbline 94
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -