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

📄 main.s

📁 关于proteus的仿真实例
💻 S
📖 第 1 页 / 共 4 页
字号:
	.module main.c
	.area data(ram, con, rel)
_PhoneNum::
	.blkb 12
	.area idata
	.byte 49,51,55,49,51,53,50,54,52,55,50,0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym e PhoneNum _PhoneNum A[12:12]c
_RxIndexTail::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym e RxIndexTail _RxIndexTail c
_RxStatus:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s RxStatus _RxStatus c
_TxStatus:
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s TxStatus _TxStatus c
_OkFlag:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s OkFlag _OkFlag c
_CallInFlag:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s CallInFlag _CallInFlag c
_NoCarrierFlag:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s NoCarrierFlag _NoCarrierFlag c
_BusyFlag:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s BusyFlag _BusyFlag c
_DettqFlag:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s DettqFlag _DettqFlag c
_release:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s release _release c
_CallOut:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s CallOut _CallOut c
_error:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s error _error c
_PhoneNumData:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbsym s PhoneNumData _PhoneNumData c
	.area lit(rom, con, rel)
_At::
	.byte 'A,'T,0
	.dbsym e At _At A[3:3]kc
_Ata::
	.byte 'A,'T,'A,0
	.dbsym e Ata _Ata A[4:4]kc
_Ath::
	.byte 'A,'T,'H,0
	.dbsym e Ath _Ath A[4:4]kc
_Ate0::
	.byte 'A,'T,'E,48,0
	.dbsym e Ate0 _Ate0 A[5:5]kc
_Atv0::
	.byte 'A,'T,'V,48,0
	.dbsym e Atv0 _Atv0 A[5:5]kc
_Atx0::
	.byte 'A,'T,'X,48,0
	.dbsym e Atx0 _Atx0 A[5:5]kc
_Atf::
	.byte 'A,'T,38,'F,0
	.dbsym e Atf _Atf A[5:5]kc
_Atclip::
	.byte 'A,'T,43,'C,'L,'I,'P,61,49,0
	.dbsym e Atclip _Atclip A[10:10]kc
_Atcsq::
	.byte 'A,'T,43,'C,'S,'Q,0
	.dbsym e Atcsq _Atcsq A[7:7]kc
_Atssyn::
	.byte 'A,'T,94,'S,'S,'Y,'N,'C,61,49,0
	.dbsym e Atssyn _Atssyn A[11:11]kc
_Atsmso::
	.byte 'A,'T,94,'S,'M,'S,'O,0
	.dbsym e Atsmso _Atsmso A[8:8]kc
_Atsnfs::
	.byte 'A,'T,94,'S,'N,'F,'S,61,52,0
	.dbsym e Atsnfs _Atsnfs A[10:10]kc
_Atsnfi::
	.byte 'A,'T,94,'S,'N,'F,'I,61,52,44,51,50,55,54,55,0
	.dbsym e Atsnfi _Atsnfi A[16:16]kc
_Atcnmi::
	.byte 'A,'T,43,'C,'N,'M,'I,61,49,44,49,44,48,44,48,44
	.byte 49,0
	.dbsym e Atcnmi _Atcnmi A[18:18]kc
_Atsnfo::
	.byte 'A,'T,94,'S,'N,'F,'O,61,51,44,49,54,51,56,52,44
	.byte 49,54,51,56,52,44,49,54,51,56,52,44,49,54,51,56
	.byte 52,44,49,54,51,56,52,44,52,44,48,0
	.dbsym e Atsnfo _Atsnfo A[44:44]kc
_Atcmgf::
	.byte 'A,'T,43,'C,'M,'G,'F,61,48,0
	.dbsym e Atcmgf _Atcmgf A[10:10]kc
_Atcmgs::
	.byte 'A,'T,43,'C,'M,'G,'S,61,0
	.dbsym e Atcmgs _Atcmgs A[9:9]kc
_Atcmgr::
	.byte 'A,'T,43,'C,'M,'G,'R,61,49,0
	.dbsym e Atcmgr _Atcmgr A[10:10]kc
_Atcmgl::
	.byte 'A,'T,43,'C,'M,'G,'L,61,48,0
	.dbsym e Atcmgl _Atcmgl A[10:10]kc
_Atcmgd::
	.byte 'A,'T,43,'C,'M,'G,'D,61,0
	.dbsym e Atcmgd _Atcmgd A[9:9]kc
_Atsnfpt::
	.byte 'A,'T,94,'S,'N,'F,'P,'T,61,48,0
	.dbsym e Atsnfpt _Atsnfpt A[11:11]kc
_Atclck1::
	.byte 'A,'T,43,'C,'L,'C,'K,61,34,'S,'C,34,44,49,44,0
	.dbsym e Atclck1 _Atclck1 A[16:16]kc
_Atcpin::
	.byte 'A,'T,43,'C,'P,'I,'N,63,0
	.dbsym e Atcpin _Atcpin A[9:9]kc
_Atclck2::
	.byte 'A,'T,43,'C,'L,'C,'K,61,34,'S,'C,34,44,50,0
	.dbsym e Atclck2 _Atclck2 A[15:15]kc
_Atcpwd::
	.byte 'A,'T,43,'C,'P,'W,'D,61,34,'S,'C,34,44,0
	.dbsym e Atcpwd _Atcpwd A[14:14]kc
_Atclck0::
	.byte 'A,'T,43,'C,'L,'C,'K,61,34,'S,'C,34,44,48,44,0
	.dbsym e Atclck0 _Atclck0 A[16:16]kc
_Atcpinc::
	.byte 'A,'T,43,'C,'P,'I,'N,61,0
	.dbsym e Atcpinc _Atcpinc A[9:9]kc
_Atsblk::
	.byte 'A,'T,94,'S,'B,'L,'K,0
	.dbsym e Atsblk _Atsblk A[8:8]kc
_Atccfc::
	.byte 'A,'T,94,'C,'C,'F,'C,61,0
	.dbsym e Atccfc _Atccfc A[9:9]kc
_SMSin::
	.byte 43,'C,'M,'T,'I,58,32,34,'S,'M,34,44,32,49,0
	.dbsym e SMSin _SMSin A[15:15]kc
_Atd::
	.byte 'A,'T,'D,0
	.dbsym e Atd _Atd A[4:4]kc
	.area vector(rom, abs)
	.org 22
	rjmp _uart0_rx_isr
	.area lit(rom, con, rel)
	.area text(rom, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay/var.h
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay\main.c
	.dbfunc e uart0_rx_isr _uart0_rx_isr fV
;              j -> R16
;              i -> R16
	.even
_uart0_rx_isr::
	st -y,R2
	st -y,R3
	st -y,R16
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 18
; ////////////////////////////////////////////////////////////////////////////////
; // ICC-AVR application builder : 2006-6-25 下午 06:02:39
; // Target : M8
; // Crystal: 3.6864Mhz
; // Author:  Anwarye
; // Title:   Detcetaphone
; ////////////////////////////////////////////////////////////////////////////////
; 
; #include <iom8v.h>
; #include <macros.h>
; #include "var.h"
; 
; #define XTAL == 3.6864M
; 
; ////////////////////////////////////////////////////////////////////////////////
; #pragma interrupt_handler uart0_rx_isr:12
; void uart0_rx_isr(void)
; {
	.dbline 20
;     unsigned char i,j;
;     if(UDR == 0x0A)
	in R24,0xc
	cpi R24,10
	brne L2
	.dbline 21
;     { 
	.dbline 22
;        return;		 // 收到0x0A直接丢弃
	rjmp L1
L2:
	.dbline 25
;     }
; 	
; 	i = RxIndex;
	lds R16,_RxIndex
	.dbline 26
; 	j = RxIndex-1;
	lds R16,_RxIndex
	subi R16,1
	.dbline 27
;     if((RxBuf[0] == 0x30) && (RxBuf[1] == 0x0D))
	lds R24,_RxBuf
	cpi R24,48
	brne L4
	lds R24,_RxBuf+1
	cpi R24,13
	brne L4
	.dbline 28
;     {
	.dbline 29
;         RxIndexTail = RxIndex;              // 保存接收缓冲指针尾
	lds R2,_RxIndex
	sts _RxIndexTail,R2
	.dbline 30
;         RxIndex = 0;	  		 			// 接收缓冲指针归零
	clr R2
	sts _RxIndex,R2
	.dbline 31
; 	    RxStatus = 1;						// 接收完成标志置位
	ldi R24,1
	sts _RxStatus,R24
	.dbline 32
; 		OkFlag = 1;
	sts _OkFlag,R24
	.dbline 33
; 		error = 0;
	sts _error,R2
	.dbline 34
; 		return; 
	rjmp L1
L4:
	.dbline 36
; 	}
;     if((RxBuf[0] == 0x32) && (RxBuf[1] == 0x0D))  // 收到来电信号,来电标志置位
	lds R24,_RxBuf
	cpi R24,50
	brne L7
	lds R24,_RxBuf+1
	cpi R24,13
	brne L7
	.dbline 37
;     {
	.dbline 38
;         CallInFlag = 1;	                    // 置电话呼入标志
	ldi R24,1
	sts _CallInFlag,R24
	.dbline 39
; 	    RxIndex = 0;
	clr R2
	sts _RxIndex,R2
	.dbline 40
; 		RxStatus = 1;
	sts _RxStatus,R24
	.dbline 41
; 		OkFlag = 1;
	sts _OkFlag,R24
	.dbline 42
; 		return;  
	rjmp L1
L7:
	.dbline 44
;     }
;     else if((RxBuf[0] == 0x33) && (RxBuf[1] == 0x0D))  // 被叫号码忙 或者挂机 主叫挂机
	lds R24,_RxBuf
	cpi R24,51
	brne L10
	lds R24,_RxBuf+1
	cpi R24,13
	brne L10
	.dbline 45
;     {
	.dbline 46
;         BusyFlag = 1;	                               // 置电话呼入标志
	ldi R24,1
	sts _BusyFlag,R24
	.dbline 47
; 	    RxIndex = 0;
	clr R2
	sts _RxIndex,R2
	.dbline 48
; 		RxStatus = 1;
	sts _RxStatus,R24
	.dbline 49
; 		OkFlag = 1;
	sts _OkFlag,R24
	.dbline 50
; 		return;  
	rjmp L1
L10:
	.dbline 52
;     }      
;     else if((RxBuf[0] == 0x37) && (RxBuf[1] == 0x0D))  // 收到来电信号,来电标志置位
	lds R24,_RxBuf
	cpi R24,55
	brne L13
	lds R24,_RxBuf+1
	cpi R24,13
	brne L13
	.dbline 53
;     {
	.dbline 54
;         NoCarrierFlag = 1;	                           // 置电话呼入标志  NO CARRIER
	ldi R24,1
	sts _NoCarrierFlag,R24
	.dbline 55
; 	    RxIndex = 0;
	clr R2
	sts _RxIndex,R2
	.dbline 56
; 		RxStatus = 1;
	sts _RxStatus,R24
	.dbline 57
; 		OkFlag = 1;
	sts _OkFlag,R24
	.dbline 58
; 		return;
	rjmp L1
L13:
	.dbline 60
;     }
;     else if((RxBuf[0] == 0x34) && (RxBuf[1] == 0x0D))  // 收到来电信号,来电标志置位
	lds R24,_RxBuf
	cpi R24,52
	brne L16
	lds R24,_RxBuf+1
	cpi R24,13
	brne L16
	.dbline 61
;     {
	.dbline 62
; 	    RxIndex = 0;
	clr R2
	sts _RxIndex,R2
	.dbline 63
; 		RxStatus = 1;
	ldi R24,1
	sts _RxStatus,R24
	.dbline 64
; 		OkFlag = 1;
	sts _OkFlag,R24
	.dbline 65
; 		error = 1;
	sts _error,R24
	.dbline 66
; 		return;	
	rjmp L1
L16:
	.dbline 69
; 	}
; 	else 
;     {
	.dbline 71
;     
;     RxBuf[RxIndex++] = UDR;                 // 继续接收数据放入接收缓冲
	lds R2,_RxIndex
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _RxIndex,R24
	ldi R24,<_RxBuf
	ldi R25,>_RxBuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	in R2,0xc
	std z+0,R2
	.dbline 72
; 	RxStatus = 0;                         // 串口接收中
	clr R2
	sts _RxStatus,R2
	.dbline 74
; //	return;		  		  	   		      // 结束接收,直接跳出
; 	}
	.dbline -2
L1:
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R16,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r j 16 c
	.dbsym r i 16 c
	.dbend
	.area vector(rom, abs)
	.org 26
	rjmp _uart0_tx_isr
	.area text(rom, con, rel)
	.dbfile D:\MyProject\SMS-MC55\Code\窃听器delay\main.c
	.dbfunc e uart0_tx_isr _uart0_tx_isr fV
	.even
_uart0_tx_isr::
	st -y,R2
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 80
; }
; 
; ////////////////////////////////////////////////////////////////////////////////
; #pragma interrupt_handler uart0_tx_isr:14
; void uart0_tx_isr(void)
; {
	.dbline 82
;     
;     if(!TxStatus)                                   // 本帧数据未发完,则继续发送  
	lds R2,_TxStatus
	tst R2
	brne L20
	.dbline 83
; 	{
	.dbline 85
; 	    //while ( !(UCSRA & (1<<UDRE)) );             // 等待UDR空
; 	    UDR = TxBuf[TxIndex];		
	ldi R24,<_TxBuf
	ldi R25,>_TxBuf
	lds R30,_TxIndex
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	out 0xc,R2
	.dbline 86
; 	}
L20:
	.dbline 87
; 	if((TxBuf[TxIndex] == 0x0D) || (TxBuf[TxIndex] == 0x1A))  // 本帧数据发送结束
	ldi R24,<_TxBuf
	ldi R25,>_TxBuf
	lds R30,_TxIndex
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,13
	breq L24
	ldi R24,<_TxBuf
	ldi R25,>_TxBuf
	lds R30,_TxIndex
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,26
	brne L22
L24:
	.dbline 88
; 	{
	.dbline 89
; 		TxStatus = 1;                          // 发送完成状态标志置位
	ldi R24,1
	sts _TxStatus,R24
	.dbline 90
; 		TxIndex = 0;                           // 发送缓冲区指针归零
	clr R2
	sts _TxIndex,R2
	.dbline 91
; 		UCSRB &= ~((1<<TXCIE));//|(1<<TXEN));  // 关发送中断
	cbi 0xa,6
	.dbline 92
; 		return;
	rjmp L19
L22:
	.dbline 94
; 	}
; 	TxIndex++;                              
	lds R24,_TxIndex
	subi R24,255    ; addi 1
	sts _TxIndex,R24
	.dbline -2
L19:
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e CheckRx _CheckRx fc
;              j -> R18
;              i -> R16
	.even
_CheckRx::
	.dbline -1
	.dbline 97
; }
; unsigned char CheckRx(void)
; {
	.dbline 99
;     unsigned char i,j;
; 	i = RxIndex;
	lds R16,_RxIndex
	.dbline 100
; 	j = RxIndex - 1;
	lds R18,_RxIndex
	subi R18,1
	.dbline 101
;     if(( RxBuf[j] == 0x30) && (RxBuf[i] == 0x0D))
	ldi R24,<_RxBuf
	ldi R25,>_RxBuf
	mov R30,R18
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,48
	brne L26
	ldi R24,<_RxBuf
	ldi R25,>_RxBuf
	mov R30,R16
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,13
	brne L26
	.dbline 102
; 	{
	.dbline 103
; 	    RxIndex = 0;
	clr R2
	sts _RxIndex,R2
	.dbline 104
; 		return (1);
	ldi R16,1
	rjmp L25
L26:
	.dbline 107
; 	}
; 	else
; 	{
	.dbline 108
; 	    return (0);
	clr R16
	.dbline -2
L25:
	.dbline 0 ; func end
	ret
	.dbsym r j 18 c
	.dbsym r i 16 c
	.dbend
	.dbfunc e ClearRxBuf _ClearRxBuf fV
;              i -> R16
	.even
_ClearRxBuf::
	.dbline -1
	.dbline 115
; 	}
; }
; /*-----------------------------------------------------------------------*/
; ///////////////////////////  清除接收缓冲  ////////////////////////////////
; /*-----------------------------------------------------------------------*/
; void ClearRxBuf(void)
; {
	.dbline 117
;     unsigned char i;
; 	for(i=0;i<128;i++)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -