📄 3510i.lst
字号:
(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 + -