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

📄 3510i.lst

📁 3510 TFT彩屏的测试程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0023) 	DDRC  = 0xFF;
    1957 BB84      OUT	0x14,R24
(0024) 	PORTD = 0x00;
    1958 BA22      OUT	0x12,R2
(0025) 	DDRD  = 0xFF;
    1959 BB81      OUT	0x11,R24
(0026) 	
(0027) 	TCCR0 = 0x00; //stop
    195A BE23      OUT	0x33,R2
(0028)  	TCNT0 = 0x83; //set count
    195B E883      LDI	R24,0x83
    195C BF82      OUT	0x32,R24
(0029)  	OCR0  = 0x7D;  //set compare
    195D E78D      LDI	R24,0x7D
    195E BF8C      OUT	0x3C,R24
(0030)  	TCCR0 = 0x02; //start timer
    195F E082      LDI	R24,2
    1960 BF83      OUT	0x33,R24
(0031)  	
(0032)  	MCUCR = 0x00;
    1961 BE25      OUT	0x35,R2
(0033)  	GICR  = 0x00;
    1962 BE2B      OUT	0x3B,R2
(0034)  	TIMSK = 0x01; //timer interrupt sources
    1963 E081      LDI	R24,1
    1964 BF89      OUT	0x39,R24
(0035)  	SEI(); //re-enable interrupts
    1965 9478      BSET	7
    1966 9508      RET
_timer0_ovf_isr:
    1967 922A      ST	R2,-Y
    1968 938A      ST	R24,-Y
    1969 B62F      IN	R2,0x3F
    196A 922A      ST	R2,-Y
(0036) }
(0037) #pragma interrupt_handler timer0_ovf_isr:10
(0038) void timer0_ovf_isr(void)
(0039) {
(0040)  	TCNT0 = 0x83; //reload counter value
    196B E883      LDI	R24,0x83
    196C BF82      OUT	0x32,R24
(0041)  	if(get_bit(fBuzzring,fbuzzring))
    196D 902000B2  LDS	R2,0xB2
    196F FE21      SBRS	R2,1
    1970 C005      RJMP	0x1976
(0042) 		xor_bit(PORTA,0);
    1971 E081      LDI	R24,1
    1972 B22B      IN	R2,0x1B
    1973 2628      EOR	R2,R24
    1974 BA2B      OUT	0x1B,R2
    1975 C001      RJMP	0x1977
(0043) 	else
(0044) 		clr_bit(PORTA,0);
    1976 98D8      CBI	0x1B,0
    1977 9029      LD	R2,Y+
    1978 BE2F      OUT	0x3F,R2
    1979 9189      LD	R24,Y+
    197A 9029      LD	R2,Y+
    197B 9518      RETI
_main:
    197C 9723      SBIW	R28,3
(0045) }
(0046) void main(void)
(0047) {
(0048) 	MCU_Initial();
    197D DFD1      RCALL	_MCU_Initial
(0049) 	LCD_Initialize();
    197E 940E1A84  CALL	_LCD_Initialize
(0050) 	LCD_BGColor = 0xff;//white color
    1980 EF8F      LDI	R24,0xFF
    1981 938000BE  STS	_LCD_BGColor,R24
(0051) 	LCD_ClearScreen();
    1983 940E1B3E  CALL	_LCD_ClearScreen
(0052) 	LCD_PenColor=0b00000000;//black color
    1985 2422      CLR	R2
    1986 922000BD  STS	_LCD_PenColor,R2
(0053) 	LCD_WriteChineseString(font12x12,17,0,0);
    1988 822A      STD	Y+2,R2
    1989 8228      STD	Y+0,R2
    198A E121      LDI	R18,0x11
    198B ED0A      LDI	R16,0xDA
    198C E216      LDI	R17,0x26
    198D 940E1D1D  CALL	_LCD_WriteChineseString
    198F C00A      RJMP	0x199A
(0054) 	while(1)
(0055) 	{
(0056) 		Key_Scan();
    1990 940E1775  CALL	_Key_Scan
(0057) 		Key_Pr();
    1992 940E17DA  CALL	_Key_Pr
(0058) 		Buzz_Pr();
    1994 940E1E32  CALL	_Buzz_Pr
(0059) 		delay_nms(4);
    1996 E004      LDI	R16,4
    1997 E010      LDI	R17,0
    1998 940E193F  CALL	_delay_nms
    199A CFF5      RJMP	0x1990
    199B 9623      ADIW	R28,3
    199C 9508      RET
FILE: D:\StudyRoom\学习AVR\3510测试ICC版\3510i.c
(0001) #include "3510i.h"
(0002) #include "math.h"
(0003) #include "english_6x8_pixel.h"
(0004) 
(0005) uchar LCD_BGColor;
(0006) uchar LCD_PenColor;
(0007) void LCD_Delay(void)
(0008) {
(0009) 	uint i;
(0010) 	for(i = 0; i < 32768; i ++)
_LCD_Delay:
  i                    --> R16
    199D 2700      CLR	R16
    199E 2711      CLR	R17
    199F C003      RJMP	0x19A3
(0011) 		asm("NOP");
    19A0 0000      NOP
    19A1 5F0F      SUBI	R16,0xFF
    19A2 4F1F      SBCI	R17,0xFF
    19A3 3000      CPI	R16,0
    19A4 E8E0      LDI	R30,0x80
    19A5 071E      CPC	R17,R30
    19A6 F3C8      BCS	0x19A0
    19A7 9508      RET
(0012) }
(0013) 
(0014) void LCD_Reset(void)
(0015) {
(0016) 	clr_bit(LCD_RST_PORT, LCD_RST);		//set RST = L
_LCD_Reset:
    19A8 98C3      CBI	0x18,3
(0017) 	LCD_Delay();
    19A9 DFF3      RCALL	_LCD_Delay
(0018) 	set_bit(LCD_RST_PORT, LCD_RST);		//set RST = H
    19AA 9AC3      SBI	0x18,3
(0019) 	LCD_Delay();
    19AB DFF1      RCALL	_LCD_Delay
    19AC 9508      RET
(0020) }
(0021) 
(0022) void LCD_SendCommand(uchar cmd)
(0023) {
(0024) 	set_bit(LCD_SIO_DDR, LCD_SIO);		//set SDI.DDR = 1
_LCD_SendCommand:
  cmd                  --> R16
    19AD 9ABD      SBI	0x17,5
(0025) 	clr_bit(LCD_CS_PORT, LCD_CS);		//set CS = L
    19AE 98C4      CBI	0x18,4
(0026) 	clr_bit(LCD_SCL_PORT, LCD_SCL);		//set SCK = L
    19AF 98C7      CBI	0x18,7
(0027) 	clr_bit(LCD_SIO_PORT, LCD_SIO);		//send 0, for command
    19B0 98C5      CBI	0x18,5
(0028) 	set_bit(LCD_SCL_PORT, LCD_SCL);		//set SCK = H, latch data
    19B1 9AC7      SBI	0x18,7
(0029) //Bit 0(MSB)
(0030) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19B2 98C7      CBI	0x18,7
(0031) 	if(cmd & 0x80)
    19B3 FF07      SBRS	R16,7
    19B4 C002      RJMP	0x19B7
(0032) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19B5 9AC5      SBI	0x18,5
    19B6 C001      RJMP	0x19B8
(0033) 	else
(0034) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19B7 98C5      CBI	0x18,5
(0035) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19B8 9AC7      SBI	0x18,7
(0036) //Bit 1
(0037) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19B9 98C7      CBI	0x18,7
(0038) 	if(cmd & 0x40)
    19BA FF06      SBRS	R16,6
    19BB C002      RJMP	0x19BE
(0039) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19BC 9AC5      SBI	0x18,5
    19BD C001      RJMP	0x19BF
(0040) 	else
(0041) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19BE 98C5      CBI	0x18,5
(0042) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19BF 9AC7      SBI	0x18,7
(0043) //Bit 2
(0044) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19C0 98C7      CBI	0x18,7
(0045) 	if(cmd & 0x20)
    19C1 FF05      SBRS	R16,5
    19C2 C002      RJMP	0x19C5
(0046) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19C3 9AC5      SBI	0x18,5
    19C4 C001      RJMP	0x19C6
(0047) 	else
(0048) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19C5 98C5      CBI	0x18,5
(0049) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19C6 9AC7      SBI	0x18,7
(0050) //Bit 3
(0051) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19C7 98C7      CBI	0x18,7
(0052) 	if(cmd & 0x10)
    19C8 FF04      SBRS	R16,4
    19C9 C002      RJMP	0x19CC
(0053) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19CA 9AC5      SBI	0x18,5
    19CB C001      RJMP	0x19CD
(0054) 	else
(0055) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19CC 98C5      CBI	0x18,5
(0056) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19CD 9AC7      SBI	0x18,7
(0057) //Bit 4
(0058) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19CE 98C7      CBI	0x18,7
(0059) 	if(cmd & 0x08)
    19CF FF03      SBRS	R16,3
    19D0 C002      RJMP	0x19D3
(0060) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19D1 9AC5      SBI	0x18,5
    19D2 C001      RJMP	0x19D4
(0061) 	else
(0062) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19D3 98C5      CBI	0x18,5
(0063) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19D4 9AC7      SBI	0x18,7
(0064) //Bit 5
(0065) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19D5 98C7      CBI	0x18,7
(0066) 	if(cmd & 0x04)
    19D6 FF02      SBRS	R16,2
    19D7 C002      RJMP	0x19DA
(0067) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19D8 9AC5      SBI	0x18,5
    19D9 C001      RJMP	0x19DB
(0068) 	else
(0069) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19DA 98C5      CBI	0x18,5
(0070) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19DB 9AC7      SBI	0x18,7
(0071) //Bit 6
(0072) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19DC 98C7      CBI	0x18,7
(0073) 	if(cmd & 0x02)
    19DD FF01      SBRS	R16,1
    19DE C002      RJMP	0x19E1
(0074) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19DF 9AC5      SBI	0x18,5
    19E0 C001      RJMP	0x19E2
(0075) 	else
(0076) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19E1 98C5      CBI	0x18,5
(0077) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19E2 9AC7      SBI	0x18,7
(0078) //Bit 7(LSB)
(0079) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19E3 98C7      CBI	0x18,7
(0080) 	if(cmd & 0x01)
    19E4 FF00      SBRS	R16,0
    19E5 C002      RJMP	0x19E8
(0081) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19E6 9AC5      SBI	0x18,5
    19E7 C001      RJMP	0x19E9
(0082) 	else
(0083) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19E8 98C5      CBI	0x18,5
(0084) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19E9 9AC7      SBI	0x18,7
    19EA 9508      RET
(0085) //done
(0086) }
(0087) 
(0088) void LCD_SendData(uchar data)
(0089) {
(0090) 	set_bit(LCD_SIO_DDR, LCD_SIO);		//set SDI.DDR = 1
_LCD_SendData:
  data                 --> R16
    19EB 9ABD      SBI	0x17,5
(0091) 	clr_bit(LCD_CS_PORT, LCD_CS);		//set CS = L
    19EC 98C4      CBI	0x18,4
(0092) 	clr_bit(LCD_SCL_PORT, LCD_SCL);		//set SCK = L
    19ED 98C7      CBI	0x18,7
(0093) 	set_bit(LCD_SIO_PORT, LCD_SIO);		//send 1, for command
    19EE 9AC5      SBI	0x18,5
(0094) 	set_bit(LCD_SCL_PORT, LCD_SCL);		//set SCK = H, latch data
    19EF 9AC7      SBI	0x18,7
(0095) //Bit 0(MSB)
(0096) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19F0 98C7      CBI	0x18,7
(0097) 	if(data & 0x80)
    19F1 FF07      SBRS	R16,7
    19F2 C002      RJMP	0x19F5
(0098) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19F3 9AC5      SBI	0x18,5
    19F4 C001      RJMP	0x19F6
(0099) 	else
(0100) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19F5 98C5      CBI	0x18,5
(0101) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19F6 9AC7      SBI	0x18,7
(0102) //Bit 1
(0103) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19F7 98C7      CBI	0x18,7
(0104) 	if(data & 0x40)
    19F8 FF06      SBRS	R16,6
    19F9 C002      RJMP	0x19FC
(0105) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    19FA 9AC5      SBI	0x18,5
    19FB C001      RJMP	0x19FD
(0106) 	else
(0107) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    19FC 98C5      CBI	0x18,5
(0108) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    19FD 9AC7      SBI	0x18,7
(0109) //Bit 2
(0110) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    19FE 98C7      CBI	0x18,7
(0111) 	if(data & 0x20)
    19FF FF05      SBRS	R16,5
    1A00 C002      RJMP	0x1A03
(0112) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    1A01 9AC5      SBI	0x18,5
    1A02 C001      RJMP	0x1A04
(0113) 	else
(0114) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    1A03 98C5      CBI	0x18,5
(0115) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    1A04 9AC7      SBI	0x18,7
(0116) //Bit 3
(0117) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    1A05 98C7      CBI	0x18,7
(0118) 	if(data & 0x10)
    1A06 FF04      SBRS	R16,4
    1A07 C002      RJMP	0x1A0A
(0119) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    1A08 9AC5      SBI	0x18,5
    1A09 C001      RJMP	0x1A0B
(0120) 	else
(0121) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    1A0A 98C5      CBI	0x18,5
(0122) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    1A0B 9AC7      SBI	0x18,7
(0123) //Bit 4
(0124) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    1A0C 98C7      CBI	0x18,7
(0125) 	if(data & 0x08)
    1A0D FF03      SBRS	R16,3
    1A0E C002      RJMP	0x1A11
(0126) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    1A0F 9AC5      SBI	0x18,5
    1A10 C001      RJMP	0x1A12
(0127) 	else
(0128) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    1A11 98C5      CBI	0x18,5
(0129) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    1A12 9AC7      SBI	0x18,7
(0130) //Bit 5
(0131) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    1A13 98C7      CBI	0x18,7
(0132) 	if(data & 0x04)
    1A14 FF02      SBRS	R16,2
    1A15 C002      RJMP	0x1A18
(0133) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    1A16 9AC5      SBI	0x18,5
    1A17 C001      RJMP	0x1A19
(0134) 	else
(0135) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    1A18 98C5      CBI	0x18,5
(0136) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    1A19 9AC7      SBI	0x18,7
(0137) //Bit 6
(0138) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    1A1A 98C7      CBI	0x18,7
(0139) 	if(data & 0x02)
    1A1B FF01      SBRS	R16,1
    1A1C C002      RJMP	0x1A1F
(0140) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    1A1D 9AC5      SBI	0x18,5
    1A1E C001      RJMP	0x1A20
(0141) 	else
(0142) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    1A1F 98C5      CBI	0x18,5
(0143) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    1A20 9AC7      SBI	0x18,7
(0144) //Bit 7(LSB)
(0145) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    1A21 98C7      CBI	0x18,7
(0146) 	if(data & 0x01)
    1A22 FF00      SBRS	R16,0
    1A23 C002      RJMP	0x1A26
(0147) 		set_bit(LCD_SIO_PORT, LCD_SIO);
    1A24 9AC5      SBI	0x18,5
    1A25 C001      RJMP	0x1A27
(0148) 	else
(0149) 		clr_bit(LCD_SIO_PORT, LCD_SIO);
    1A26 98C5      CBI	0x18,5
(0150) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    1A27 9AC7      SBI	0x18,7
    1A28 9508      RET
(0151) //done
(0152) }
(0153) 
(0154) void LCD_ReadDummy(void)
(0155) {
(0156) 	clr_bit(LCD_SIO_DDR, LCD_SIO);		//set SDI.DDR = 0
_LCD_ReadDummy:
    1A29 98BD      CBI	0x17,5
(0157) 	set_bit(LCD_SIO_PORT, LCD_SIO);	
    1A2A 9AC5      SBI	0x18,5
(0158) 	clr_bit(LCD_CS_PORT, LCD_CS);		//set CS = L
    1A2B 98C4      CBI	0x18,4
(0159) 	clr_bit(LCD_SCL_PORT, LCD_SCL);
    1A2C 98C7      CBI	0x18,7
(0160) 	set_bit(LCD_SCL_PORT, LCD_SCL);
    1A2D 9AC7      SBI	0x18,7
    1A2E 9508      RET
(0161) }
(0162) 
(0163) uchar LCD_ReadData(void)
(0164) {
(0165) 	uchar r = 0;
_LCD_ReadData:
  r                    --> R16

⌨️ 快捷键说明

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