📄 main.lis
字号:
.module main.c
.area vector(rom, abs)
.org 44
002C 0C940000 jmp _uart0_tx_isr
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\sim340_e/uart1.h
0000 .dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
0000 _uart0_tx_isr::
0000 0E940000 xcall push_lset
0004 .dbline -1
0004 .dbline 41
0004 ; #include "iom32v.h"
0004 ; #include <macros.h>
0004 ; #include "uart1.h"
0004 ; #include "UART.h"
0004 ; #include "globle_temp.h"
0004 ; //#include "sim340.h"
0004 ; //端口初始化
0004 ; void port_init(void)
0004 ; {
0004 ; PORTA = 0x00;
0004 ; DDRA = 0x00;
0004 ; PORTB = 0x00;
0004 ; DDRB = 0x00;
0004 ; PORTC = 0x00;
0004 ; DDRC = 0x00;
0004 ; PORTD = 0x00;
0004 ; DDRD = 0x00;
0004 ; }
0004 ; //串口初始化
0004 ; void uart0_init(void)
0004 ; {
0004 ; //USART初始化
0004 ; UCSRB = 0x00;
0004 ; UCSRA=0x00; //设置通信参数:8位数据位,1位停止位,无校验位
0004 ; UCSRC=0x86; //选择寄存器C
0004 ; UBRRH =(unsigned char)(baud_set>>8);//设置波特率
0004 ; UBRRL =(unsigned char)baud_set;
0004 ; UCSRB=0xD8; //接收、发送数据使能,并允许中断
0004 ; }
0004 ; //设备初始化
0004 ; void init_devices(void)
0004 ; {
0004 ; //stop errant interrupts until set up
0004 ; CLI(); //disable all interrupts
0004 ; port_init();
0004 ; uart0_init();
0004 ;
0004 ; MCUCR = 0x00;
0004 ; GICR = 0x00;
0004 ; TIMSK = 0x00; //timer interrupt sources
0004 ; SEI(); //re-enable interrupts
0004 .dbline 43
0004 ; //all peripherals are now initialized
0004 ; }
0004 2090AD01 lds R2,_tx_counter
0008 2220 tst R2
000A E1F0 breq L2
000C .dbline 44
000C ; void main(void)
000C .dbline 45
000C ; {
000C 822D mov R24,R2
000E 8150 subi R24,1
0010 8093AD01 sts _tx_counter,R24
0014 .dbline 46
0014 ; int nLen1; //发送短消息时的命令编码长度
0014 80E0 ldi R24,<_tx_buffer
0016 90E0 ldi R25,>_tx_buffer
0018 E091AE01 lds R30,_tx_rd_index
001C FF27 clr R31
001E E80F add R30,R24
0020 F91F adc R31,R25
0022 2080 ldd R2,z+0
0024 2CB8 out 0xc,R2
0026 .dbline 47
0026 ; int nLen2; //发送短消息的PDU编码长度
0026 05E0 ldi R16,5
0028 10E0 ldi R17,0
002A 0E940000 xcall _delay_nus
002E .dbline 48
002E ; char pOut1[40]; //命令代码缓冲区
002E 8091AE01 lds R24,_tx_rd_index
0032 8F5F subi R24,255 ; addi 1
0034 282E mov R2,R24
0036 2092AE01 sts _tx_rd_index,R2
003A 883C cpi R24,200
003C 19F4 brne L4
003E .dbline 48
003E 2224 clr R2
0040 2092AE01 sts _tx_rd_index,R2
0044 L4:
0044 .dbline 49
0044 L2:
0044 .dbline -2
0044 L1:
0044 0E940000 xcall pop_lset
0048 .dbline 0 ; func end
0048 1895 reti
004A .dbend
.area vector(rom, abs)
.org 36
0024 0C942500 jmp _uart0_rx_isr
.area text(rom, con, rel)
004A .dbfile C:\DOCUME~1\Administrator\桌面\sim340_e/uart1.h
004A .dbfunc e uart0_rx_isr _uart0_rx_isr fV
004A ; data -> R16
004A ; status -> R18
.even
004A _uart0_rx_isr::
004A 2A92 st -y,R2
004C 0A93 st -y,R16
004E 2A93 st -y,R18
0050 8A93 st -y,R24
0052 9A93 st -y,R25
0054 EA93 st -y,R30
0056 FA93 st -y,R31
0058 2FB6 in R2,0x3f
005A 2A92 st -y,R2
005C .dbline -1
005C .dbline 54
005C ; char pOut2[200]; //PDU编码缓冲区
005C ; char PhoneNumber[13]={'8','6','1','5','9','6','1','1','5','2','1','3','7'};
005C ; int nPhone; //被叫用户的手机号码和长度
005C ; char pBuf[6]={'H','E','L','L','O','!'};//发送数据的内容和长度
005C ; int data_Len;
005C ; char UART0_RX_Temp[200]; // 串口 0 的接收缓冲区
005C .dbline 57
005C ; int n_tx0_length; //要发送的数据长度
005C ; int i;
005C ; char nSend; //发送成功标志
005C 2BB1 in R18,0xb
005E .dbline 58
005E ; nPhone=13;
005E 0CB1 in R16,0xc
0060 .dbline 59
0060 ; data_Len=6;
0060 822F mov R24,R18
0062 8C71 andi R24,28
0064 09F5 brne L7
0066 .dbline 60
0066 ; //uart0_init(); //串口初始化
0066 .dbline 61
0066 ; //DDRB|=0x20; //打开B口第五位作为输出
0066 80E0 ldi R24,<_rx_buffer
0068 90E0 ldi R25,>_rx_buffer
006A E0911A00 lds R30,_rx_wr_index
006E FF27 clr R31
0070 E80F add R30,R24
0072 F91F adc R31,R25
0074 0083 std z+0,R16
0076 .dbline 62
0076 ; //PORTB|=(1<<bit5);
0076 80911A00 lds R24,_rx_wr_index
007A 8F5F subi R24,255 ; addi 1
007C 282E mov R2,R24
007E 20921A00 sts _rx_wr_index,R2
0082 883C cpi R24,200
0084 19F4 brne L9
0086 .dbline 63
0086 ; //#asm("sei"); //使能全局中断
0086 2224 clr R2
0088 20921A00 sts _rx_wr_index,R2
008C L9:
008C .dbline 64
008C ; init_devices();
008C 80911B00 lds R24,_rx_counter
0090 8F5F subi R24,255 ; addi 1
0092 282E mov R2,R24
0094 20921B00 sts _rx_counter,R2
0098 883C cpi R24,200
009A 31F4 brne L11
009C .dbline 65
009C ; DDRB|=0x20; //打开B口第五位作为输出
009C .dbline 66
009C ; PORTB|=(1<<bit5);
009C 2224 clr R2
009E 20921B00 sts _rx_counter,R2
00A2 .dbline 67
00A2 ; DDRA|=0x04; //打开A口第二位作为输出
00A2 81E0 ldi R24,1
00A4 80931800 sts _rx_buffer_overflow,R24
00A8 .dbline 68
00A8 ; PORTA|=(1<<2);
00A8 L11:
00A8 .dbline 70
00A8 L7:
00A8 .dbline -2
00A8 L6:
00A8 2990 ld R2,y+
00AA 2FBE out 0x3f,R2
00AC F991 ld R31,y+
00AE E991 ld R30,y+
00B0 9991 ld R25,y+
00B2 8991 ld R24,y+
00B4 2991 ld R18,y+
00B6 0991 ld R16,y+
00B8 2990 ld R2,y+
00BA .dbline 0 ; func end
00BA 1895 reti
00BC .dbsym r data 16 c
00BC .dbsym r status 18 c
00BC .dbend
00BC .dbfunc e getchar _getchar fc
00BC ; data -> R16
.even
00BC _getchar::
00BC .dbline -1
00BC .dbline 75
00BC ; DDRA|=0x10; //A口第4位输出,为模块上电
00BC ; PORTA&=~(1<<4);
00BC ; n_tx0_length=readcsca(uart0_tx_buf); //读取短消息中心号码命令
00BC ; putstring(uart0_tx_buf,n_tx0_length); //发送读短消息中心号码命令
00BC ; getstring(UART0_RX_Temp); //等待接收
00BC ; sca_len=GetPhone(UART0_RX_Temp,sca); //获取电话号码
00BC ; sca[sca_len]='F'; //在末位加'F'
00BC L14:
00BC .dbline 77
00BC L15:
00BC .dbline 77
00BC ; n_tx0_length = setCmgf(uart0_tx_buf); //设置短消息模式位‘0’
00BC ; putstring(uart0_tx_buf,n_tx0_length); //发送命令串
00BC 20901B00 lds R2,_rx_counter
00C0 2220 tst R2
00C2 E1F3 breq L14
00C4 .dbline 78
00C4 ; //delay_nms(500);
00C4 80E0 ldi R24,<_rx_buffer
00C6 90E0 ldi R25,>_rx_buffer
00C8 E0911900 lds R30,_rx_rd_index
00CC FF27 clr R31
00CE E80F add R30,R24
00D0 F91F adc R31,R25
00D2 0081 ldd R16,z+0
00D4 .dbline 79
00D4 ; for(;;)
00D4 80911900 lds R24,_rx_rd_index
00D8 8F5F subi R24,255 ; addi 1
00DA 282E mov R2,R24
00DC 20921900 sts _rx_rd_index,R2
00E0 883C cpi R24,200
00E2 19F4 brne L17
00E4 .dbline 79
00E4 2224 clr R2
00E6 20921900 sts _rx_rd_index,R2
00EA L17:
00EA .dbline 81
00EA ; {
00EA ; //发送对方的电话号码和信息,并返回发送的命令串和信息的PDU编码
00EA 80911B00 lds R24,_rx_counter
00EE 8150 subi R24,1
00F0 80931B00 sts _rx_counter,R24
00F4 .dbline 83
00F4 ; SendMsm(PhoneNumber,nPhone,pBuf,data_Len,&nLen1,&nLen2,pOut1,pOut2,sca,sca_len);
00F4 ; putstring(pOut1,nLen1);
00F4 .dbline -2
00F4 L13:
00F4 .dbline 0 ; func end
00F4 0895 ret
00F6 .dbsym r data 16 c
00F6 .dbend
00F6 .dbfunc e getstring _getstring fV
00F6 ; i -> R20,R21
00F6 ; in -> R22,R23
.even
00F6 _getstring::
00F6 0E940000 xcall push_gset2
00FA B801 movw R22,R16
00FC .dbline -1
00FC .dbline 86
00FC ; //等待"> "
00FC ; for(;;)
00FC ; {
00FC .dbline 87
00FC ; if(Uart_RecvFlag == 1)
00FC 4427 clr R20
00FE 5527 clr R21
0100 07C0 xjmp L21
0102 L20:
0102 .dbline 89
0102 .dbline 90
0102 DCDF xcall _getchar
0104 FA01 movw R30,R20
0106 E60F add R30,R22
0108 F71F adc R31,R23
010A 0083 std z+0,R16
010C .dbline 91
010C 4F5F subi R20,255 ; offset = 1
010E 5F4F sbci R21,255
0110 .dbline 92
0110 L21:
0110 .dbline 88
0110 ; {
0110 20901B00 lds R2,_rx_counter
0114 2220 tst R2
0116 A9F7 brne L20
0118 .dbline -2
0118 L19:
0118 0E940000 xcall pop_gset2
011C .dbline 0 ; func end
011C 0895 ret
011E .dbsym r i 20 I
011E .dbsym r in 22 pc
011E .dbend
011E .dbfunc e putchar _putchar fV
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -