?? led.lst
字號:
00BD E0E0 LDI R30,0
00BE 075E CPC R21,R30
00BF F409 BNE 0x00C1
00C0 C03D RJMP 0x00FE
00C1 374B CPI R20,0x7B
00C2 E0E0 LDI R30,0
00C3 075E CPC R21,R30
00C4 F409 BNE 0x00C6
00C5 C040 RJMP 0x0106
00C6 374D CPI R20,0x7D
00C7 E0E0 LDI R30,0
00C8 075E CPC R21,R30
00C9 F409 BNE 0x00CB
00CA C043 RJMP 0x010E
00CB 374E CPI R20,0x7E
00CC E0E0 LDI R30,0
00CD 075E CPC R21,R30
00CE F409 BNE 0x00D0
00CF C046 RJMP 0x0116
00D0 C047 RJMP 0x0118
00D1 3D47 CPI R20,0xD7
00D2 E0E0 LDI R30,0
00D3 075E CPC R21,R30
00D4 F129 BEQ 0x00FA
00D5 3D4B CPI R20,0xDB
00D6 E0E0 LDI R30,0
00D7 075E CPC R21,R30
00D8 F149 BEQ 0x0102
00D9 3D4D CPI R20,0xDD
00DA E0E0 LDI R30,0
00DB 075E CPC R21,R30
00DC F169 BEQ 0x010A
00DD 3D4E CPI R20,0xDE
00DE E0E0 LDI R30,0
00DF 075E CPC R21,R30
00E0 F409 BNE 0x00E2
00E1 C030 RJMP 0x0112
00E2 3D47 CPI R20,0xD7
00E3 E0E0 LDI R30,0
00E4 075E CPC R21,R30
00E5 F40C BGE 0x00E7
00E6 C031 RJMP 0x0118
00E7 3E47 CPI R20,0xE7
00E8 E0E0 LDI R30,0
00E9 075E CPC R21,R30
00EA F069 BEQ 0x00F8
00EB 3E4B CPI R20,0xEB
00EC E0E0 LDI R30,0
00ED 075E CPC R21,R30
00EE F089 BEQ 0x0100
00EF 3E4D CPI R20,0xED
00F0 E0E0 LDI R30,0
00F1 075E CPC R21,R30
00F2 F0A9 BEQ 0x0108
00F3 3E4E CPI R20,0xEE
00F4 E0E0 LDI R30,0
00F5 075E CPC R21,R30
00F6 F0C9 BEQ 0x0110
00F7 C020 RJMP 0x0118
(0158) {
(0159) case 0xe7:return 0; //按鍵0
00F8 2700 CLR R16
00F9 C01F RJMP 0x0119
(0160) case 0xd7:return 1; //按鍵1
00FA E001 LDI R16,1
00FB C01D RJMP 0x0119
(0161) case 0xb7:return 2; //按鍵2
00FC E002 LDI R16,2
00FD C01B RJMP 0x0119
(0162) case 0x77:return 3; //按鍵3
00FE E003 LDI R16,3
00FF C019 RJMP 0x0119
(0163) case 0xeb:return 4; //按鍵4
0100 E004 LDI R16,4
0101 C017 RJMP 0x0119
(0164) case 0xdb:return 5; //按鍵5
0102 E005 LDI R16,5
0103 C015 RJMP 0x0119
(0165) case 0xbb:return 6; //按鍵6
0104 E006 LDI R16,6
0105 C013 RJMP 0x0119
(0166) case 0x7b:return 7; //按鍵7
0106 E007 LDI R16,7
0107 C011 RJMP 0x0119
(0167) case 0xed:return 8; //按鍵8
0108 E008 LDI R16,0x8
0109 C00F RJMP 0x0119
(0168) case 0xdd:return 9; //按鍵9
010A E009 LDI R16,0x9
010B C00D RJMP 0x0119
(0169) case 0xbd:return 10; //按鍵A
010C E00A LDI R16,0xA
010D C00B RJMP 0x0119
(0170) case 0x7d:return 11; //按鍵B
010E E00B LDI R16,0xB
010F C009 RJMP 0x0119
(0171) case 0xee:return 12; //按鍵C
0110 E00C LDI R16,0xC
0111 C007 RJMP 0x0119
(0172) case 0xde:return 13; //按鍵D
0112 E00D LDI R16,0xD
0113 C005 RJMP 0x0119
(0173) case 0xbe:return 14; //按鍵E
0114 E00E LDI R16,0xE
0115 C003 RJMP 0x0119
(0174) case 0x7e:return 15; //按鍵F
0116 E00F LDI R16,0xF
0117 C001 RJMP 0x0119
(0175) default: return 16; //無按鍵按下
0118 E100 LDI R16,0x10
0119 940E025A CALL pop_gset1
011B 9508 RET
_Display_One_SMG:
data --> R22
bit --> R20
011C 940E0255 CALL push_gset2
011E 2F62 MOV R22,R18
011F 2F40 MOV R20,R16
(0176) }
(0177) }
(0178) /*******************************************************/
(0179) /****** 函數名稱: Display_One_SMG() ******/
(0180) /****** 功 能: 顯示指定內容在指定位 ******/
(0181) /****** 參 數: bit--位(1-8), ******/
(0182) /****** data--顯示內容(0-15,16為全滅)****/
(0183) /****** 返回值 : 無 ******/
(0184) /*******************************************************/
(0185) void Display_One_SMG(unsigned char bit,unsigned char data)
(0186) {
(0187) SMG=SMG_Conver[data]; //送顯示數據
0120 E584 LDI R24,0x54
0121 E090 LDI R25,0
0122 2FE6 MOV R30,R22
0123 27FF CLR R31
0124 0FE8 ADD R30,R24
0125 1FF9 ADC R31,R25
0126 91E4 LPM R30,0(Z)
0127 BBE8 OUT 0x18,R30
(0188) Open_SMG_DATA; //鎖存數據
0128 9ADB SBI 0x1B,3
(0189) Close_SMG_DATA;
0129 98DB CBI 0x1B,3
(0190) SMG=~BIT(bit); //送位數據
012A E001 LDI R16,1
012B 2F14 MOV R17,R20
012C 940E026E CALL lsl8
012E 2E20 MOV R2,R16
012F 9420 COM R2
0130 BA28 OUT 0x18,R2
(0191) Open_SMG_BIT; //鎖存數據
0131 9ADA SBI 0x1B,2
(0192) Close_SMG_BIT;
0132 98DA CBI 0x1B,2
(0193) delay_nms(2);
0133 E002 LDI R16,2
0134 E010 LDI R17,0
0135 DF2C RCALL _delay_nms
0136 940E024C CALL pop_gset2
0138 9508 RET
_Display_One_SMG_Point:
bit --> R20
0139 940E0257 CALL push_gset1
013B 2F40 MOV R20,R16
(0194) }
(0195) /*******************************************************/
(0196) /****** 函數名稱: Display_One_SMG_Point() ******/
(0197) /****** 功 能: 顯示小數點在指定位 ******/
(0198) /****** 返回值 : 無 ******/
(0199) /*******************************************************/
(0200) void Display_One_SMG_Point(unsigned char bit)
(0201) {
(0202) SMG=0x80; //送顯示數據
013C E880 LDI R24,0x80
013D BB88 OUT 0x18,R24
(0203) Open_SMG_DATA; //鎖存數據
013E 9ADB SBI 0x1B,3
(0204) Close_SMG_DATA;
013F 98DB CBI 0x1B,3
(0205) SMG=~BIT(bit); //送位數據
0140 E001 LDI R16,1
0141 2F14 MOV R17,R20
0142 940E026E CALL lsl8
0144 2E20 MOV R2,R16
0145 9420 COM R2
0146 BA28 OUT 0x18,R2
(0206) Open_SMG_BIT; //鎖存數據
0147 9ADA SBI 0x1B,2
(0207) Close_SMG_BIT;
0148 98DA CBI 0x1B,2
(0208) delay_nms(2);
0149 E002 LDI R16,2
014A E010 LDI R17,0
014B DF16 RCALL _delay_nms
014C 940E025A CALL pop_gset1
014E 9508 RET
(0209) }
(0210) /*******************************************************/
(0211) /****** 函數名稱: En_Led() ******/
(0212) /****** 功 能: 使能LED功能 ******/
(0213) /****** 參 數: 無 ******/
(0214) /****** 返回值 : 無 ******/
(0215) /*******************************************************/
(0216) void En_Led(void)
(0217) {
(0218) DDRB=0xff; //設置輸出
_En_Led:
014F EF8F LDI R24,0xFF
0150 BB87 OUT 0x17,R24
(0219) PORTB=0xff; //輸出高電平
0151 BB88 OUT 0x18,R24
(0220) Open_LED; //打開LED功能
0152 9ADC SBI 0x1B,4
0153 9508 RET
(0221) }
(0222) /*******************************************************/
(0223) /****** 函數名稱: Un_Led() ******/
(0224) /****** 功 能: 關閉LED功能 ******/
(0225) /****** 參 數: 無 ******/
(0226) /****** 返回值 : 無 ******/
(0227) /*******************************************************/
(0228) void Un_Led(void)
(0229) {
(0230) DDRB=0xff; //設置輸出
_Un_Led:
0154 EF8F LDI R24,0xFF
0155 BB87 OUT 0x17,R24
(0231) PORTB=0xff; //輸出高電平
0156 BB88 OUT 0x18,R24
(0232) Open_LED; //打開LED功能
0157 9ADC SBI 0x1B,4
(0233) Close_LED; //關閉LED功能
0158 98DC CBI 0x1B,4
0159 9508 RET
(0234) }
(0235) /*******************************************************/
(0236) /****** 函數名稱: Clear_SMG() ******/
(0237) /****** 功 能: 關閉數碼管功能 ******/
(0238) /****** 參 數: 無 ******/
(0239) /****** 返回值 : 無 ******/
(0240) /*******************************************************/
(0241) void Clear_SMG(void)
(0242) {
(0243) DDRB=0xff; //設置輸出
_Clear_SMG:
015A EF8F LDI R24,0xFF
015B BB87 OUT 0x17,R24
(0244) PORTB=0x00; //輸出高電平
015C 2422 CLR R2
015D BA28 OUT 0x18,R2
(0245) Open_SMG_DATA;
015E 9ADB SBI 0x1B,3
(0246) Close_SMG_DATA;
015F 98DB CBI 0x1B,3
(0247) Open_SMG_BIT;
0160 9ADA SBI 0x1B,2
(0248) Close_SMG_BIT;
0161 98DA CBI 0x1B,2
0162 9508 RET
(0249) }
(0250) /*******************************************************/
(0251) /****** 函數名稱: Dac_Init() ******/
(0252) /****** 功 能: 初始化DCA ******/
(0253) /****** 參 數: 無 ******/
(0254) /****** 返回值 : 無 ******/
(0255) /*******************************************************/
(0256) void Dac_Init(void)
(0257) {
(0258) DDRA=0x80;
_Dac_Init:
0163 E880 LDI R24,0x80
0164 BB8A OUT 0x1A,R24
(0259) Set_CS5615;
0165 9ADF SBI 0x1B,7
0166 9508 RET
(0260) }
(0261) /*******************************************************/
(0262) /****** 函數名稱: Spi_Init() ******/
(0263) /****** 功 能: 初始化SPI接口 ******/
(0264) /****** 參 數: 無 ******/
(0265) /****** 返回值 : 無 ******/
(0266) /*******************************************************/
(0267) void Spi_Init(void)
(0268) {
(0269) unsigned char i;
(0270) DDRB|=0xb0; //MISO輸入MOSI,SCK,SS輸出
_Spi_Init:
i --> R16
0167 B387 IN R24,0x17
0168 6B80 ORI R24,0xB0
0169 BB87 OUT 0x17,R24
(0271) DDRB&=~0x40;
016A 98BE CBI 0x17,6
(0272) PORTB|=0x40; //MISO上拉有效
016B 9AC6 SBI 0x18,6
(0273) SPSR=0x01; //SPI允許,主機模式,高位在先,極性00,1/2系統時鐘速率
016C E081 LDI R24,1
016D B98E OUT 0x0E,R24
(0274) SPCR=0x50;
016E E580 LDI R24,0x50
016F B98D OUT 0x0D,R24
(0275) i=SPSR;
0170 B10E IN R16,0x0E
(0276) i=SPDR; //清空SPI,和中斷標志,使SPI空閑
0171 B10F IN R16,0x0F
0172 9508 RET
(0277) }
(0278) /*******************************************************/
(0279) /****** 函數名稱: PutSPIchar() ******/
(0280) /****** 功 能: 用SPI發送數據 ******/
(0281) /****** 參 數: data--待發的數據 ******/
(0282) /****** 返回值 : 無 ******/
(0283) /*******************************************************/
(0284) void PutSPIchar(char data)
(0285) {
(0286) SPDR=data;
_PutSPIchar:
data --> R16
0173 B90F OUT 0x0F,R16
(0287) while(!(SPSR&(1<<SPIF))); //等待發送完畢
0174 9B77 SBIS 0x0E,7
0175 CFFE RJMP 0x0174
0176 9508 RET
(0288) }
(0289) /*******************************************************/
(0290) /****** 函數名稱: CPU_Init() ******/
(0291) /****** 功 能: 初始化CPU端口 ******/
(0292) /****** 參 數: 無 ******/
(0293) /****** 返回值 : 無 ******/
(0294) /*******************************************************/
(0295) void CPU_Init(void)
(0296) {
(0297) PORTB=0xff;
_CPU_Init:
0177 EF8F LDI R24,0xFF
0178 BB88 OUT 0x18,R24
(0298) DDRB=0xff;
0179 BB87 OUT 0x17,R24
(0299) PORTA=0x80;
017A E880 LDI R24,0x80
017B BB8B OUT 0x1B,R24
(0300) DDRA=0xdc;
017C ED8C LDI R24,0xDC
017D BB8A OUT 0x1A,R24
(0301) DDRB=0x00;
017E 2422 CLR R2
017F BA27 OUT 0x17,R2
(0302) PORTC=0xff;
0180 EF8F LDI R24,0xFF
0181 BB85 OUT 0x15,R24
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -