📄 3510i.lst
字号:
181D C0AA RJMP 0x18C8
181E 3087 CPI R24,7
181F E0E0 LDI R30,0
1820 079E CPC R25,R30
1821 F409 BNE 0x1823
1822 C0FC RJMP 0x191F
1823 3088 CPI R24,0x8
1824 E0E0 LDI R30,0
1825 079E CPC R25,R30
1826 F409 BNE 0x1828
1827 C0B6 RJMP 0x18DE
1828 3089 CPI R24,0x9
1829 E0E0 LDI R30,0
182A 079E CPC R25,R30
182B F409 BNE 0x182D
182C C0F2 RJMP 0x191F
182D 308B CPI R24,0xB
182E E0E0 LDI R30,0
182F 079E CPC R25,R30
1830 F409 BNE 0x1832
1831 C0C2 RJMP 0x18F4
1832 308C CPI R24,0xC
1833 E0E0 LDI R30,0
1834 079E CPC R25,R30
1835 F409 BNE 0x1837
1836 C0D3 RJMP 0x190A
1837 C0E7 RJMP 0x191F
(0160) {
(0161) case 1: //confirm键
(0162) {
(0163) ++MenuLevel;
1838 918000BB LDS R24,_MenuLevel
183A 5F8F SUBI R24,0xFF
183B 938000BB STS _MenuLevel,R24
(0164) if(MenuLevel==1) //enter the menu
183D 3081 CPI R24,1
183E F401 BNE 0x183F
(0165) {
(0166)
(0167) }
(0168) LCD_BGColor=0xff;
183F EF8F LDI R24,0xFF
1840 E090 LDI R25,0
1841 939000BF STS _LCD_BGColor+1,R25
1843 938000BE STS _LCD_BGColor,R24
(0169) LCD_EraseBlock(0,0,97,66);
1845 E482 LDI R24,0x42
1846 838A STD Y+2,R24
1847 E681 LDI R24,0x61
1848 8388 STD Y+0,R24
1849 2722 CLR R18
184A 2700 CLR R16
184B 940E1D47 CALL _LCD_EraseBlock
(0170) LCD_BGColor=0b11100000;
184D EE80 LDI R24,0xE0
184E E090 LDI R25,0
184F 939000BF STS _LCD_BGColor+1,R25
1851 938000BE STS _LCD_BGColor,R24
(0171) LCD_EraseBlock(10,10,87,56);
1853 E388 LDI R24,0x38
1854 838A STD Y+2,R24
1855 E587 LDI R24,0x57
1856 8388 STD Y+0,R24
1857 E02A LDI R18,0xA
1858 E00A LDI R16,0xA
1859 940E1D47 CALL _LCD_EraseBlock
(0172) LCD_WriteEnglishString("Confirm Key",10 , 25);
185B E189 LDI R24,0x19
185C 8388 STD Y+0,R24
185D E02A LDI R18,0xA
185E EA04 LDI R16,0xA4
185F E010 LDI R17,0
1860 940E1C38 CALL _LCD_WriteEnglishString
(0173) break;
1862 C0BC RJMP 0x191F
(0174) }
(0175) case 2://up
(0176) {
(0177) LCD_BGColor=0b11100000;
1863 EE80 LDI R24,0xE0
1864 E090 LDI R25,0
1865 939000BF STS _LCD_BGColor+1,R25
1867 938000BE STS _LCD_BGColor,R24
(0178) LCD_EraseBlock(10,10,87,56);
1869 E388 LDI R24,0x38
186A 838A STD Y+2,R24
186B E587 LDI R24,0x57
186C 8388 STD Y+0,R24
186D E02A LDI R18,0xA
186E E00A LDI R16,0xA
186F 940E1D47 CALL _LCD_EraseBlock
(0179) LCD_WriteEnglishString("Up Key",10 , 25);
1871 E189 LDI R24,0x19
1872 8388 STD Y+0,R24
1873 E02A LDI R18,0xA
1874 E90D LDI R16,0x9D
1875 E010 LDI R17,0
1876 940E1C38 CALL _LCD_WriteEnglishString
(0180) break;
1878 C0A6 RJMP 0x191F
(0181) }
(0182) case 3://cancel
(0183) {
(0184) if(MenuLevel>0)
1879 2422 CLR R2
187A 903000BB LDS R3,_MenuLevel
187C 1423 CP R2,R3
187D F428 BCC 0x1883
(0185) --MenuLevel;
187E 2D83 MOV R24,R3
187F 5081 SUBI R24,1
1880 938000BB STS _MenuLevel,R24
1882 C003 RJMP 0x1886
(0186) else
(0187) MenuLevel=0;
1883 2422 CLR R2
1884 922000BB STS _MenuLevel,R2
(0188)
(0189) LCD_BGColor=0b11100000;
1886 EE80 LDI R24,0xE0
1887 E090 LDI R25,0
1888 939000BF STS _LCD_BGColor+1,R25
188A 938000BE STS _LCD_BGColor,R24
(0190) LCD_EraseBlock(10,10,87,56);
188C E388 LDI R24,0x38
188D 838A STD Y+2,R24
188E E587 LDI R24,0x57
188F 8388 STD Y+0,R24
1890 E02A LDI R18,0xA
1891 E00A LDI R16,0xA
1892 940E1D47 CALL _LCD_EraseBlock
(0191) LCD_WriteEnglishString("Cancel Key",10 , 25);
1894 E189 LDI R24,0x19
1895 8388 STD Y+0,R24
1896 E02A LDI R18,0xA
1897 E902 LDI R16,0x92
1898 E010 LDI R17,0
1899 940E1C38 CALL _LCD_WriteEnglishString
(0192) break;
189B C083 RJMP 0x191F
(0193) }
(0194) case 4: //left
(0195) {
(0196) LCD_BGColor=0b11100000;
189C EE80 LDI R24,0xE0
189D E090 LDI R25,0
189E 939000BF STS _LCD_BGColor+1,R25
18A0 938000BE STS _LCD_BGColor,R24
(0197) LCD_EraseBlock(10,10,87,56);
18A2 E388 LDI R24,0x38
18A3 838A STD Y+2,R24
18A4 E587 LDI R24,0x57
18A5 8388 STD Y+0,R24
18A6 E02A LDI R18,0xA
18A7 E00A LDI R16,0xA
18A8 940E1D47 CALL _LCD_EraseBlock
(0198) LCD_WriteEnglishString("Left Key",10 , 25);
18AA E189 LDI R24,0x19
18AB 8388 STD Y+0,R24
18AC E02A LDI R18,0xA
18AD E809 LDI R16,0x89
18AE E010 LDI R17,0
18AF 940E1C38 CALL _LCD_WriteEnglishString
(0199) break;
18B1 C06D RJMP 0x191F
(0200) }
(0201) case 5://confirm
(0202) {
(0203) LCD_BGColor=0b11100000;
18B2 EE80 LDI R24,0xE0
18B3 E090 LDI R25,0
18B4 939000BF STS _LCD_BGColor+1,R25
18B6 938000BE STS _LCD_BGColor,R24
(0204) LCD_EraseBlock(10,10,87,56);
18B8 E388 LDI R24,0x38
18B9 838A STD Y+2,R24
18BA E587 LDI R24,0x57
18BB 8388 STD Y+0,R24
18BC E02A LDI R18,0xA
18BD E00A LDI R16,0xA
18BE 940E1D47 CALL _LCD_EraseBlock
(0205) LCD_WriteEnglishString("Confirm Key",10 , 25);
18C0 E189 LDI R24,0x19
18C1 8388 STD Y+0,R24
18C2 E02A LDI R18,0xA
18C3 EA04 LDI R16,0xA4
18C4 E010 LDI R17,0
18C5 940E1C38 CALL _LCD_WriteEnglishString
(0206) break;
18C7 C057 RJMP 0x191F
(0207) }
(0208) case 6://right
(0209) {
(0210) LCD_BGColor=0b11100000;
18C8 EE80 LDI R24,0xE0
18C9 E090 LDI R25,0
18CA 939000BF STS _LCD_BGColor+1,R25
18CC 938000BE STS _LCD_BGColor,R24
(0211) LCD_EraseBlock(10,10,87,56);
18CE E388 LDI R24,0x38
18CF 838A STD Y+2,R24
18D0 E587 LDI R24,0x57
18D1 8388 STD Y+0,R24
18D2 E02A LDI R18,0xA
18D3 E00A LDI R16,0xA
18D4 940E1D47 CALL _LCD_EraseBlock
(0212) LCD_WriteEnglishString("Right Key",10 , 25);
18D6 E189 LDI R24,0x19
18D7 8388 STD Y+0,R24
18D8 E02A LDI R18,0xA
18D9 E70F LDI R16,0x7F
18DA E010 LDI R17,0
18DB 940E1C38 CALL _LCD_WriteEnglishString
(0213) break;
18DD C041 RJMP 0x191F
(0214) }
(0215) case 7: //
(0216) {
(0217) //LCD_WriteEnglishString("KeyValue=7",10 , 25);
(0218) break;
(0219) }
(0220) case 8://down
(0221) {
(0222) LCD_BGColor=0b11100000;
18DE EE80 LDI R24,0xE0
18DF E090 LDI R25,0
18E0 939000BF STS _LCD_BGColor+1,R25
18E2 938000BE STS _LCD_BGColor,R24
(0223) LCD_EraseBlock(10,10,87,56);
18E4 E388 LDI R24,0x38
18E5 838A STD Y+2,R24
18E6 E587 LDI R24,0x57
18E7 8388 STD Y+0,R24
18E8 E02A LDI R18,0xA
18E9 E00A LDI R16,0xA
18EA 940E1D47 CALL _LCD_EraseBlock
(0224) LCD_WriteEnglishString("Down Key",10 , 25);
18EC E189 LDI R24,0x19
18ED 8388 STD Y+0,R24
18EE E02A LDI R18,0xA
18EF E706 LDI R16,0x76
18F0 E010 LDI R17,0
18F1 940E1C38 CALL _LCD_WriteEnglishString
(0225) break;
18F3 C02B RJMP 0x191F
(0226) }
(0227) case 9://
(0228) {
(0229) //LCD_WriteEnglishString("KeyValue=9",10 , 25);
(0230) break;
(0231) }
(0232) case 0: //
(0233) {
(0234) //LCD_WriteEnglishString("KeyValue=0",10 , 25);
(0235) break;
(0236) }
(0237) case 0x0b://Time
(0238) {
(0239) LCD_BGColor=0b11100000;
18F4 EE80 LDI R24,0xE0
18F5 E090 LDI R25,0
18F6 939000BF STS _LCD_BGColor+1,R25
18F8 938000BE STS _LCD_BGColor,R24
(0240) LCD_EraseBlock(10,10,87,56);
18FA E388 LDI R24,0x38
18FB 838A STD Y+2,R24
18FC E587 LDI R24,0x57
18FD 8388 STD Y+0,R24
18FE E02A LDI R18,0xA
18FF E00A LDI R16,0xA
1900 940E1D47 CALL _LCD_EraseBlock
(0241) LCD_WriteEnglishString("KeyValue=*",10 , 25);
1902 E189 LDI R24,0x19
1903 8388 STD Y+0,R24
1904 E02A LDI R18,0xA
1905 E60B LDI R16,0x6B
1906 E010 LDI R17,0
1907 940E1C38 CALL _LCD_WriteEnglishString
(0242) break;
1909 C015 RJMP 0x191F
(0243) }
(0244) case 0x0c://Temp
(0245) {
(0246) LCD_BGColor=0b11100000;
190A EE80 LDI R24,0xE0
190B E090 LDI R25,0
190C 939000BF STS _LCD_BGColor+1,R25
190E 938000BE STS _LCD_BGColor,R24
(0247) LCD_EraseBlock(10,10,87,56);
1910 E388 LDI R24,0x38
1911 838A STD Y+2,R24
1912 E587 LDI R24,0x57
1913 8388 STD Y+0,R24
1914 E02A LDI R18,0xA
1915 E00A LDI R16,0xA
1916 940E1D47 CALL _LCD_EraseBlock
(0248) LCD_WriteEnglishString("KeyValue=#",10 , 25);
1918 E189 LDI R24,0x19
1919 8388 STD Y+0,R24
191A E02A LDI R18,0xA
191B E600 LDI R16,0x60
191C E010 LDI R17,0
191D 940E1C38 CALL _LCD_WriteEnglishString
(0249) break;
(0250) }
(0251) default:break;
(0252) }
(0253) }
191F 9623 ADIW R28,3
1920 940E1E73 CALL pop_gset3x
1922 9508 RET
(0254) }
(0255) /*--------------------------------------------延时函数------------------------------------*/
(0256) //1us延时函数
(0257) void delay_1us(void)
(0258) {
(0259) NOP();
_delay_1us:
1923 0000 NOP
1924 9508 RET
_delay_nus:
i --> R10
n --> R12
1925 940E1E88 CALL push_gset4x
1927 0168 MOVW R12,R16
(0260) }
(0261)
(0262) //n us 延时函数
(0263) void delay_nus(unsigned int n)
(0264) {
(0265) unsigned int i;
(0266) for(i=0;i<n;i++)
1928 24AA CLR R10
1929 24BB CLR R11
192A C004 RJMP 0x192F
(0267) delay_1us();
192B DFF7 RCALL _delay_1us
192C 01C5 MOVW R24,R10
192D 9601 ADIW R24,1
192E 015C MOVW R10,R24
192F 14AC CP R10,R12
1930 04BD CPC R11,R13
1931 F3C8 BCS 0x192B
1932 940E1E7F CALL pop_gset4x
1934 9508 RET
(0268) }
(0269)
(0270) //1ms延时函数
(0271) void delay_1ms(void)
(0272) {
(0273) unsigned int i;
(0274) for(i=0;i<600;i++);
_delay_1ms:
i --> R16
1935 2700 CLR R16
1936 2711 CLR R17
1937 C002 RJMP 0x193A
1938 5F0F SUBI R16,0xFF
1939 4F1F SBCI R17,0xFF
193A 3508 CPI R16,0x58
193B E0E2 LDI R30,2
193C 071E CPC R17,R30
193D F3D0 BCS 0x1938
193E 9508 RET
_delay_nms:
i --> R10
n --> R12
193F 940E1E88 CALL push_gset4x
1941 0168 MOVW R12,R16
(0275) }
(0276)
(0277) //n ms延时函数
(0278) void delay_nms(unsigned int n)
(0279) {
(0280) unsigned int i;
(0281) for(i=0;i<n;i++)
1942 24AA CLR R10
1943 24BB CLR R11
1944 C004 RJMP 0x1949
(0282) delay_1ms();
1945 DFEF RCALL _delay_1ms
1946 01C5 MOVW R24,R10
1947 9601 ADIW R24,1
1948 015C MOVW R10,R24
1949 14AC CP R10,R12
194A 04BD CPC R11,R13
194B F3C8 BCS 0x1945
194C 940E1E7F CALL pop_gset4x
194E 9508 RET
FILE: D:\StudyRoom\学习AVR\3510测试ICC版\main.c
(0001) //=======头文件============
(0002) #include <iom16v.h>
(0003) #include <macros.h>
(0004) #include "3510i.h"
(0005) #include "bit.h"
(0006) #include "tu.h"
(0007) #include "keyscan.h"
(0008) #include "buzzpr.h"
(0009) #include "chinese_12x12_pixel.h"
(0010) //=========================
(0011) extern uchar LCD_BGColor;
(0012) extern uchar LCD_PenColor;
(0013) extern uchar fBuzzring;
(0014) extern BuzzringCnt;
(0015) void MCU_Initial(void)
(0016) {
(0017) CLI();
_MCU_Initial:
194F 94F8 BCLR 7
(0018) PORTA = 0x00;
1950 2422 CLR R2
1951 BA2B OUT 0x1B,R2
(0019) DDRA = 0xFF;
1952 EF8F LDI R24,0xFF
1953 BB8A OUT 0x1A,R24
(0020) PORTB = 0x00;
1954 BA28 OUT 0x18,R2
(0021) DDRB = 0xFF;
1955 BB87 OUT 0x17,R24
(0022) PORTC = 0x00;
1956 BA25 OUT 0x15,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -