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

📄 gpseep.lst

📁 微程序控制器采用ATMEL AVR MEGA162
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0381 DFCF      RCALL	_ModemBuffNotEmpty
    0382 2300      TST	R16
    0383 F749      BNE	0x036D
    0384 2C2A      MOV	R2,R10
    0385 2433      CLR	R3
    0386 2D82      MOV	R24,R2
    0387 5081      SUBI	R24,1
    0388 2EA8      MOV	R10,R24
    0389 2444      CLR	R4
    038A 1442      CP	R4,R2
    038B F2E8      BCS	0x0369
(0098)     	}
(0099)         
(0100)     }
(0101)     return False;
    038C 2700      CLR	R16
    038D 940E0427  CALL	pop_gset4
    038F 9508      RET
(0102) }
(0103) 
(0104) 
(0105) BYTE ModemGetch (void)
(0106) {
(0107) 	BYTE c = 0;
_ModemGetch:
  c                    --> R16
    0390 2700      CLR	R16
(0108)     if (mDataSlot != mEmptySlot)
    0391 902002A2  LDS	R2,mEmptySlot
    0393 903002A1  LDS	R3,mDataSlot
    0395 1432      CP	R3,R2
    0396 F0C1      BEQ	0x03AF
(0109) 	{
(0110)          c = ModemBuffer [mDataSlot];
    0397 902002A7  LDS	R2,ModemBuffer
    0399 903002A8  LDS	R3,ModemBuffer+1
    039B 91E002A1  LDS	R30,mDataSlot
    039D 27FF      CLR	R31
    039E 0DE2      ADD	R30,R2
    039F 1DF3      ADC	R31,R3
    03A0 8100      LDD	R16,Z+0
(0111)          mDataSlot++;
    03A1 918002A1  LDS	R24,mDataSlot
    03A3 5F8F      SUBI	R24,0xFF
    03A4 938002A1  STS	mDataSlot,R24
(0112)          if (mDataSlot > MODEM_BUFFER_SIZE)
    03A6 EF8A      LDI	R24,0xFA
    03A7 902002A1  LDS	R2,mDataSlot
    03A9 1582      CP	R24,R2
    03AA F418      BCC	0x03AE
(0113) 		 mDataSlot = 0;
    03AB 2422      CLR	R2
    03AC 922002A1  STS	mDataSlot,R2
(0114) 		 return(c);
    03AE C001      RJMP	0x03B0
(0115)     }
(0116)     else {
(0117)        return (BYTE)0x00;
    03AF 2700      CLR	R16
    03B0 9508      RET
FILE: F:\mydoc\avrproject\icc\big162\gpseep\sci.c
(0001) #include "sci.h"
(0002) 
(0003)   
(0004)   
(0005) static void CommDrvDefaultProc (register BYTE value) { (void) value; };
_CommDrvDefaultProc:
  value                --> Y+0
    03B1 9508      RET
_UART0_RX_interrupt:
    03B2 940E0452  CALL	push_lset
(0006) static void (* EvtProcedure) (register BYTE value) = CommDrvDefaultProc;
(0007) // Byte pointers of the ring buffer (FIFO)
(0008) 
(0009) 
(0010) 
(0011) #pragma interrupt_handler UART0_RX_interrupt:20
(0012) 
(0013) void UART0_RX_interrupt( void )
(0014) {
(0015) 	//BYTE a=UDR0;
(0016)     EvtProcedure(UDR0);
    03B4 B10C      IN	R16,0x0C
    03B5 91E002A9  LDS	R30,EvtProcedure
    03B7 91F002AA  LDS	R31,EvtProcedure+1
    03B9 940E0449  CALL	xicall
(0017)     PORTD ^= BIT(STA);
    03BB E280      LDI	R24,0x20
    03BC B222      IN	R2,0x12
    03BD 2628      EOR	R2,R24
    03BE BA22      OUT	0x12,R2
    03BF 940E0469  CALL	pop_lset
    03C1 9518      RETI
_UART1_RX_interrupt:
    03C2 940E0452  CALL	push_lset
(0018) 	//WriteComm1(a);///////////////////////////
(0019) }
(0020) 
(0021) 
(0022) #pragma interrupt_handler UART1_RX_interrupt:21
(0023) 
(0024) void UART1_RX_interrupt( void )
(0025) {
(0026) 	WriteComm0(UDR1);
    03C4 B103      IN	R16,0x03
    03C5 D008      RCALL	_WriteComm0
(0027) 	PORTD ^= BIT(STC);
    03C6 E480      LDI	R24,0x40
    03C7 B222      IN	R2,0x12
    03C8 2628      EOR	R2,R24
    03C9 BA22      OUT	0x12,R2
    03CA 940E0469  CALL	pop_lset
    03CC 9518      RETI
(0028) }
(0029) 
(0030) 
(0031) void OpenComm0 (void)
(0032) {
_OpenComm0:
    03CD 9508      RET
(0033) 	
(0034) }
(0035) 
(0036) 
(0037) 
(0038) void WriteComm0 (BYTE c)
(0039) {
(0040) 	while( !(UCSR0A & (1<<UDRE0)) ); 
_WriteComm0:
  c                    --> R16
    03CE 9B5D      SBIS	0x0B,5
    03CF CFFE      RJMP	_WriteComm0
(0041)  	UDR0=c; 
    03D0 B90C      OUT	0x0C,R16
(0042)     PORTD ^= BIT(STA);
    03D1 E280      LDI	R24,0x20
    03D2 B222      IN	R2,0x12
    03D3 2628      EOR	R2,R24
    03D4 BA22      OUT	0x12,R2
    03D5 9508      RET
_WriteCommStr0:
  str                  --> R20
    03D6 940E0432  CALL	push_gset1
    03D8 01A8      MOVW	R20,R16
(0043)     //WriteComm1 (c);//////////////////////test
(0044) }
(0045) void WriteCommStr0 (char* str)
(0046) {
    03D9 C005      RJMP	0x03DF
(0047) 	while(*str)
(0048) 	{
(0049) 		WriteComm0(*str);
    03DA 01FA      MOVW	R30,R20
    03DB 8100      LDD	R16,Z+0
    03DC DFF1      RCALL	_WriteComm0
(0050) 		str++;
    03DD 5F4F      SUBI	R20,0xFF
    03DE 4F5F      SBCI	R21,0xFF
    03DF 01FA      MOVW	R30,R20
    03E0 8020      LDD	R2,Z+0
    03E1 2022      TST	R2
    03E2 F7B9      BNE	0x03DA
    03E3 940E0435  CALL	pop_gset1
    03E5 9508      RET
(0051) 	}
(0052) }
(0053) BYTE ReadComm0 ()
(0054) {
(0055) 	while( !(UCSR0A & (1<<RXC0)) );  
_ReadComm0:
    03E6 9B5F      SBIS	0x0B,7
    03E7 CFFE      RJMP	_ReadComm0
(0056)  	return UDR0; 
    03E8 B10C      IN	R16,0x0C
    03E9 9508      RET
(0057) }
(0058) 
(0059) 
(0060) BYTE ReadCommT0(BYTE time)
(0061) {
(0062) 	timerCounter = 0;
_ReadCommT0:
  time                 --> R16
    03EA 2422      CLR	R2
    03EB 92200170  STS	timerCounter,R2
    03ED C004      RJMP	0x03F2
(0063) 	while(timerCounter<time)
(0064) 	{
(0065) 		if(UCSR0A & (1<<RXC0))
    03EE 9B5F      SBIS	0x0B,7
    03EF C002      RJMP	0x03F2
(0066) 		return UDR0; 
    03F0 B10C      IN	R16,0x0C
    03F1 C005      RJMP	0x03F7
    03F2 90200170  LDS	R2,timerCounter
    03F4 1620      CP	R2,R16
    03F5 F3C0      BCS	0x03EE
(0067) 	}
(0068) 	
(0069) 	return 0;
    03F6 2700      CLR	R16
    03F7 9508      RET
(0070) }
(0071) 
(0072) void OpenComm1 (void)
(0073) {
_OpenComm1:
    03F8 9508      RET
(0074) 		//设置波特率19200
(0075) 	//UBRRL = 0x0B; //set baud rate lo
(0076) 	//UBRRH = 0x00; //set baud rate hi
(0077) 		//设置帧格式: 8个数据位, 1个停止位
(0078) 	//UCSRC = (1<<URSEL)|(3<<UCSZ0);	
(0079) 		//接收器与发送器使能
(0080)  	//UCSRB = (1<<RXEN)|(1<<TXEN|1<<RXCIE);
(0081) 	//UCSRB = (1<<RXEN)|(1<<TXEN);
(0082) }
(0083) 
(0084) 
(0085) 
(0086) void WriteComm1 (BYTE c)
(0087) {
(0088) 	while( !(UCSR1A & (1<<UDRE1)) ); 
_WriteComm1:
  c                    --> R16
    03F9 9B15      SBIS	0x02,5
    03FA CFFE      RJMP	_WriteComm1
(0089)  	UDR1=c; 
    03FB B903      OUT	0x03,R16
    03FC 9508      RET
_WriteCommStr1:
  str                  --> R20
    03FD 940E0432  CALL	push_gset1
    03FF 01A8      MOVW	R20,R16
(0090) }
(0091) void WriteCommStr1 (char* str)
(0092) {
    0400 C005      RJMP	0x0406
(0093) 	while(*str)
(0094) 	{
(0095) 		WriteComm1(*str);
    0401 01FA      MOVW	R30,R20
    0402 8100      LDD	R16,Z+0
    0403 DFF5      RCALL	_WriteComm1
(0096) 		str++;
    0404 5F4F      SUBI	R20,0xFF
    0405 4F5F      SBCI	R21,0xFF
    0406 01FA      MOVW	R30,R20
    0407 8020      LDD	R2,Z+0
    0408 2022      TST	R2
    0409 F7B9      BNE	0x0401
    040A 940E0435  CALL	pop_gset1
    040C 9508      RET
(0097) 	}
(0098) }
(0099) BYTE ReadComm1 ()
(0100) {
(0101) 	while( !(UCSR1A & (1<<RXC1)) );  
_ReadComm1:
    040D 9B17      SBIS	0x02,7
    040E CFFE      RJMP	_ReadComm1
(0102)  	return UDR1; 
    040F B103      IN	R16,0x03
    0410 9508      RET
(0103) }
(0104) 
(0105) 
(0106) BYTE ReadCommT1(BYTE time)
(0107) {
(0108) 	timerCounter = 0;
_ReadCommT1:
  time                 --> R16
    0411 2422      CLR	R2
    0412 92200170  STS	timerCounter,R2
    0414 C004      RJMP	0x0419
(0109) 	while(timerCounter<time)
(0110) 	{
(0111) 		if(UCSR1A & (1<<RXC1))
    0415 9B17      SBIS	0x02,7
    0416 C002      RJMP	0x0419
(0112) 		return UDR1; 
    0417 B103      IN	R16,0x03
    0418 C005      RJMP	0x041E
    0419 90200170  LDS	R2,timerCounter
    041B 1620      CP	R2,R16
    041C F3C0      BCS	0x0415
(0113) 	}
(0114) 	
(0115) 	return 0;
    041D 2700      CLR	R16
    041E 9508      RET
(0116) }
(0117) 
(0118) 
(0119) void setCommEventProc (EventProc Proc) 
(0120) {
(0121) //    disable ();
(0122)     EvtProcedure = Proc;
FILE: <library>
_setCommEventProc:
  Proc                 --> R16
    041F 931002AA  STS	EvtProcedure+1,R17
    0421 930002A9  STS	EvtProcedure,R16
    0423 9508      RET
pop_gset2:
    0424 E0E2      LDI	R30,2
    0425 940C0436  JMP	pop
pop_gset4:
    0427 E0E8      LDI	R30,0x8
    0428 940C0436  JMP	pop
push_gset5:
    042A 92FA      ST	R15,-Y
    042B 92EA      ST	R14,-Y
push_gset4:
    042C 92DA      ST	R13,-Y
    042D 92CA      ST	R12,-Y
push_gset3:
    042E 92BA      ST	R11,-Y
    042F 92AA      ST	R10,-Y
push_gset2:
    0430 937A      ST	R23,-Y
    0431 936A      ST	R22,-Y
push_gset1:
    0432 935A      ST	R21,-Y
    0433 934A      ST	R20,-Y
    0434 9508      RET
pop_gset1:
    0435 E0E1      LDI	R30,1
pop:
    0436 9149      LD	R20,Y+
    0437 9159      LD	R21,Y+
    0438 FDE0      SBRC	R30,0
    0439 9508      RET
    043A 9169      LD	R22,Y+
    043B 9179      LD	R23,Y+
    043C FDE1      SBRC	R30,1
    043D 9508      RET
    043E 90A9      LD	R10,Y+
    043F 90B9      LD	R11,Y+
    0440 FDE2      SBRC	R30,2
    0441 9508      RET
    0442 90C9      LD	R12,Y+
    0443 90D9      LD	R13,Y+
    0444 FDE3      SBRC	R30,3
    0445 9508      RET
    0446 90E9      LD	R14,Y+
    0447 90F9      LD	R15,Y+
    0448 9508      RET
xicall:
    0449 920A      ST	R0,-Y
    044A 95C8      LPM
    044B 920A      ST	R0,-Y
    044C 9631      ADIW	R30,1
    044D 95C8      LPM
    044E 2DF0      MOV	R31,R0
    044F 91E9      LD	R30,Y+
    0450 9009      LD	R0,Y+
    0451 9409      IJMP
push_lset:
    0452 93FA      ST	R31,-Y
    0453 93EA      ST	R30,-Y
    0454 93BA      ST	R27,-Y
    0455 93AA      ST	R26,-Y
    0456 939A      ST	R25,-Y
    0457 938A      ST	R24,-Y
    0458 933A      ST	R19,-Y
    0459 932A      ST	R18,-Y
    045A 931A      ST	R17,-Y
    045B 930A      ST	R16,-Y
    045C 929A      ST	R9,-Y
    045D 928A      ST	R8,-Y
    045E 927A      ST	R7,-Y
    045F 926A      ST	R6,-Y
    0460 925A      ST	R5,-Y
    0461 924A      ST	R4,-Y
    0462 923A      ST	R3,-Y
    0463 922A      ST	R2,-Y
    0464 921A      ST	R1,-Y
    0465 920A      ST	R0,-Y
    0466 B60F      IN	R0,0x3F
    0467 920A      ST	R0,-Y
    0468 9508      RET
pop_lset:
    0469 9009      LD	R0,Y+
    046A BE0F      OUT	0x3F,R0
    046B 9009      LD	R0,Y+
    046C 9019      LD	R1,Y+
    046D 9029      LD	R2,Y+
    046E 9039      LD	R3,Y+
    046F 9049      LD	R4,Y+
    0470 9059      LD	R5,Y+
    0471 9069      LD	R6,Y+
    0472 9079      LD	R7,Y+
    0473 9089      LD	R8,Y+
    0474 9099      LD	R9,Y+
    0475 9109      LD	R16,Y+
    0476 9119      LD	R17,Y+
    0477 9129      LD	R18,Y+
    0478 9139      LD	R19,Y+
    0479 9189      LD	R24,Y+
    047A 9199      LD	R25,Y+
    047B 91A9      LD	R26,Y+
    047C 91B9      LD	R27,Y+
    047D 91E9      LD	R30,Y+
    047E 91F9      LD	R31,Y+
    047F 9508      RET
_EEPROMread:
    0480 BB1F      OUT	0x1F,R17
    0481 BB0E      OUT	0x1E,R16
    0482 9AE0      SBI	0x1C,0
    0483 B30D      IN	R16,0x1D
    0484 9508      RET
_EEPROMwrite:
    0485 940E0432  CALL	push_gset1
    0487 BB1F      OUT	0x1F,R17
    0488 BB0E      OUT	0x1E,R16
    0489 BB2D      OUT	0x1D,R18
    048A B74F      IN	R20,0x3F
    048B 94F8      BCLR	7
    048C 9AE2      SBI	0x1C,2
    048D 9AE1      SBI	0x1C,1
    048E 99E1      SBIC	0x1C,1
    048F CFFE      RJMP	0x048E
    0490 BF4F      OUT	0x3F,R20
    0491 2700      CLR	R16
    0492 2711      CLR	R17
    0493 940E0435  CALL	pop_gset1
    0495 9508      RET
_EEPROMReadBytes:
    0496 940E042C  CALL	push_gset4
    0498 2EC2      MOV	R12,R18
    0499 2ED3      MOV	R13,R19
    049A 2EA0      MOV	R10,R16
    049B 2EB1      MOV	R11,R17
    049C 8568      LDD	R22,Y+8
    049D 8579      LDD	R23,Y+9
    049E 2D4C      MOV	R20,R12
    049F 2D5D      MOV	R21,R13
    04A0 C00E      RJMP	0x04AF
    04A1 2D0A      MOV	R16,R10
    04A2 2D1B      MOV	R17,R11
    04A3 940E0480  CALL	_EEPROMread
    04A5 2FE4      MOV	R30,R20
    04A6 2FF5      MOV	R31,R21
    04A7 8300      STD	Z+0,R16
    04A8 2D8A      MOV	R24,R10
    04A9 2D9B      MOV	R25,R11
    04AA 9601      ADIW	R24,1
    04AB 2EA8      MOV	R10,R24
    04AC 2EB9      MOV	R11,R25
    04AD 5F4F      SUBI	R20,0xFF
    04AE 4F5F      SBCI	R21,0xFF
    04AF 2E26      MOV	R2,R22
    04B0 2E37      MOV	R3,R23
    04B1 5061      SUBI	R22,1
    04B2 4070      SBCI	R23,0
    04B3 2022      TST	R2
    04B4 F761      BNE	0x04A1
    04B5 2033      TST	R3
    04B6 F751      BNE	0x04A1
    04B7 940E0427  CALL	pop_gset4
    04B9 9508      RET
_EEPROMWriteBytes:
    04BA 940E042C  CALL	push_gset4
    04BC 2EC2      MOV	R12,R18
    04BD 2ED3      MOV	R13,R19
    04BE 2EA0      MOV	R10,R16
    04BF 2EB1      MOV	R11,R17
    04C0 8568      LDD	R22,Y+8
    04C1 8579      LDD	R23,Y+9
    04C2 2D4C      MOV	R20,R12
    04C3 2D5D      MOV	R21,R13
    04C4 C00E      RJMP	0x04D3
    04C5 2FE4      MOV	R30,R20
    04C6 2FF5      MOV	R31,R21
    04C7 8120      LDD	R18,Z+0
    04C8 2D0A      MOV	R16,R10
    04C9 2D1B      MOV	R17,R11
    04CA 940E0485  CALL	_EEPROMwrite
    04CC 2D8A      MOV	R24,R10
    04CD 2D9B      MOV	R25,R11
    04CE 9601      ADIW	R24,1
    04CF 2EA8      MOV	R10,R24
    04D0 2EB9      MOV	R11,R25
    04D1 5F4F      SUBI	R20,0xFF
    04D2 4F5F      SBCI	R21,0xFF
    04D3 2E26      MOV	R2,R22
    04D4 2E37      MOV	R3,R23
    04D5 5061      SUBI	R22,1
    04D6 4070      SBCI	R23,0
    04D7 2022      TST	R2
    04D8 F761      BNE	0x04C5
    04D9 2033      TST	R3
    04DA F751      BNE	0x04C5
    04DB 940E0427  CALL	pop_gset4
    04DD 9508      RET

⌨️ 快捷键说明

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