?? led.lst
字號:
__text_start:
__start:
2F E5CF LDI R28,0x5F
30 E0D4 LDI R29,4
31 BFCD OUT 0x3D,R28
32 BFDE OUT 0x3E,R29
33 51C0 SUBI R28,0x10
34 40D0 SBCI R29,0
35 EA0A LDI R16,0xAA
36 8308 STD Y+0,R16
37 2400 CLR R0
38 E6EA LDI R30,0x6A
39 E0F0 LDI R31,0
3A E010 LDI R17,0
3B 36EA CPI R30,0x6A
3C 07F1 CPC R31,R17
3D F011 BEQ 0x0040
3E 9201 ST R0,Z+
3F CFFB RJMP 0x003B
40 8300 STD Z+0,R16
41 E5E4 LDI R30,0x54
42 E0F0 LDI R31,0
43 E6A0 LDI R26,0x60
44 E0B0 LDI R27,0
45 E010 LDI R17,0
46 E000 LDI R16,0
47 BF0B OUT 0x3B,R16
48 35EE CPI R30,0x5E
49 07F1 CPC R31,R17
4A F021 BEQ 0x004F
4B 95C8 LPM
4C 9631 ADIW R30,1
4D 920D ST R0,X+
4E CFF9 RJMP 0x0048
4F D06E RCALL _main
50 0000 NOP
_exit:
51 CFFF RJMP _exit
FILE: D:\mega16_32實驗板資料\ICCAVR源程序\164\led\delay.h
(0001) /**********延時函數*****************/
(0002) /*-----------------------------------------------
(0003) delay_us :1us延時函數
(0004) ------------------------------------------------*/
(0005) void delay_1us(void)
(0006) {
(0007) asm("nop");
_delay_1us:
52 0000 NOP
53 9508 RET
_delay_us:
t --> R20
54 934A ST R20,-Y
55 935A ST R21,-Y
56 01A8 MOVW R20,R16
(0008) }
(0009) /*-----------------------------------------------
(0010) delay_nus :長延時函數
(0011) 輸入參數: t :延時時間 us
(0012) ------------------------------------------------*/
(0013) void delay_us(unsigned int t)
(0014) {
57 C001 RJMP 0x0059
(0015) while(t--)
(0016) delay_1us();
58 DFF9 RCALL _delay_1us
59 011A MOVW R2,R20
5A 5041 SUBI R20,1
5B 4050 SBCI R21,0
5C 2022 TST R2
5D F7D1 BNE 0x0058
5E 2033 TST R3
5F F7C1 BNE 0x0058
60 9159 LD R21,Y+
61 9149 LD R20,Y+
62 9508 RET
(0017) }
(0018) /*----------------------------------------------
(0019) delay_ms :1ms延時函數
(0020) -----------------------------------------------*/
(0021) void delay_1ms(void)
(0022) {
(0023) unsigned int i;
(0024) for(i=0;i<1140;i++);
_delay_1ms:
i --> R16
63 2700 CLR R16
64 2711 CLR R17
65 C002 RJMP 0x0068
66 5F0F SUBI R16,0xFF
67 4F1F SBCI R17,0xFF
68 3704 CPI R16,0x74
69 E0E4 LDI R30,4
6A 071E CPC R17,R30
6B F3D0 BCS 0x0066
6C 9508 RET
_delay_ms:
t --> R20
6D 934A ST R20,-Y
6E 935A ST R21,-Y
6F 01A8 MOVW R20,R16
(0025) }
(0026) /*----------------------------------------------
(0027) delay_nms :長延時函數
(0028) 輸入參數: t :延時時間 ms
(0029) -----------------------------------------------*/
(0030) void delay_ms(unsigned int t)
(0031) {
70 C001 RJMP 0x0072
(0032) while(t--)
(0033) delay_1ms();
71 DFF1 RCALL _delay_1ms
72 011A MOVW R2,R20
73 5041 SUBI R20,1
74 4050 SBCI R21,0
75 2022 TST R2
76 F7D1 BNE 0x0071
77 2033 TST R3
78 F7C1 BNE 0x0071
79 9159 LD R21,Y+
7A 9149 LD R20,Y+
7B 9508 RET
FILE: D:\mega16_32實驗板資料\ICCAVR源程序\164\led\164.h
(0001) //定義LS164管腳和led控制腳
(0002) #define DDR_CLK DDRA
(0003) #define DDR_DATA DDRA
(0004) #define DDR_CLEAR DDRA
(0005) #define DDR_SEL DDRC
(0006) #define PORT_CLK PORTA
(0007) #define PORT_DATA PORTA
(0008) #define PORT_CLEAR PORTA
(0009) #define PORT_SEL PORTC
(0010) #define CLK PA2
(0011) #define DATA PA4
(0012) #define CLEAR PA3
(0013) #define SEL 0x3C
(0014)
(0015) unsigned char Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0016)
(0017) void Init_164()
(0018) {
(0019) DDR_CLK|=(1<<CLK); //164的時鐘,數據,清零
_Init_164:
7C 9AD2 SBI 0x1A,2
(0020) DDR_DATA|=(1<<DATA);
7D 9AD4 SBI 0x1A,4
(0021) DDR_CLEAR|=(1<<CLEAR);
7E 9AD3 SBI 0x1A,3
(0022) DDR_SEL|=SEL; //4位數碼管選通端
7F B384 IN R24,0x14
80 638C ORI R24,0x3C
81 BB84 OUT 0x14,R24
(0023) PORT_SEL|=SEL;
82 B385 IN R24,0x15
83 638C ORI R24,0x3C
84 BB85 OUT 0x15,R24
85 9508 RET
(0024) }
(0025)
(0026) void Clear_164()
(0027) {
(0028) PORT_CLEAR|=(1<<CLEAR);
_Clear_164:
86 9ADB SBI 0x1B,3
87 9508 RET
_write_164:
n --> R20
i --> R16
88 934A ST R20,-Y
(0029) }
(0030)
(0031) void write_164(unsigned char i)
(0032) {
(0033) char n;
(0034) for(n=8;n>0;n--)
89 E048 LDI R20,0x8
8A C00B RJMP 0x0096
(0035) {
(0036) if(i&0x80) PORT_DATA|=(1<<DATA);
8B FF07 SBRS R16,7
8C C002 RJMP 0x008F
8D 9ADC SBI 0x1B,4
8E C001 RJMP 0x0090
(0037) else PORT_DATA&=~(1<<DATA);
8F 98DC CBI 0x1B,4
(0038) NOP();
90 0000 NOP
(0039) PORT_CLK|=(1<<CLK);
91 9ADA SBI 0x1B,2
(0040) NOP();
92 0000 NOP
(0041) PORT_CLK&=~(1<<CLK);
93 98DA CBI 0x1B,2
(0042) i=(i<<1);
94 0F00 LSL R16
95 954A DEC R20
96 E080 LDI R24,0
97 1784 CP R24,R20
98 F390 BCS 0x008B
99 9149 LD R20,Y+
9A 9508 RET
_write_LED:
sel --> R22
i --> R20
p --> R10
9B D03B RCALL push_xgsetF00C
9C 0000 NOP
9D 0158 MOVW R10,R16
(0043) }
(0044) }
(0045) void write_LED(unsigned char *p)
(0046) {
(0047) unsigned char i,sel=0x04;
9E E064 LDI R22,4
(0048)
(0049) for(i=0;i<4;i++)
9F 2744 CLR R20
A0 C019 RJMP 0x00BA
(0050) {
(0051) write_164(Table[p[i]]);
A1 2FE4 MOV R30,R20
A2 27FF CLR R31
A3 0DEA ADD R30,R10
A4 1DFB ADC R31,R11
A5 81E0 LDD R30,Z+0
A6 27FF CLR R31
A7 E680 LDI R24,0x60
A8 E090 LDI R25,0
A9 0FE8 ADD R30,R24
AA 1FF9 ADC R31,R25
AB 8100 LDD R16,Z+0
AC DFDB RCALL _write_164
(0052) PORT_SEL&=(~sel);
AD 2E26 MOV R2,R22
AE 9420 COM R2
AF B235 IN R3,0x15
B0 2032 AND R3,R2
B1 BA35 OUT 0x15,R3
(0053) delay_ms(2);
B2 E002 LDI R16,2
B3 E010 LDI R17,0
B4 DFB8 RCALL _delay_ms
(0054) PORT_SEL|=SEL;
B5 B385 IN R24,0x15
B6 638C ORI R24,0x3C
B7 BB85 OUT 0x15,R24
(0055) sel=sel<<1;
B8 0F66 LSL R22
B9 9543 INC R20
BA 3044 CPI R20,4
BB F328 BCS 0x00A1
BC C021 RJMP pop_xgsetF00C
BD 0000 NOP
FILE: D:\mega16_32實驗板資料\ICCAVR源程序\164\led\led_test.c
(0001) //ICC-AVR application builder : 2008-11-11 16:14:49
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004)
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007)
(0008) #include "delay.h"
(0009) #include "164.h"
(0010)
(0011) void main(void)
(0012) {
(0013) unsigned char i=0,j=0;
_main:
i --> R20
j --> R22
BE 2744 CLR R20
BF 2766 CLR R22
(0014) delay_ms(20);
C0 E104 LDI R16,0x14
C1 E010 LDI R17,0
C2 DFAA RCALL _delay_ms
(0015) Init_164();
C3 DFB8 RCALL _Init_164
(0016) Clear_164();
C4 DFC1 RCALL _Clear_164
(0017) delay_ms(500);
C5 EF04 LDI R16,0xF4
C6 E011 LDI R17,1
C7 DFA5 RCALL _delay_ms
C8 C00C RJMP 0x00D5
(0018) while(1)
(0019) {
(0020) j=0x01;
C9 E061 LDI R22,1
(0021) for(i=0;i<8;i++)
CA 2744 CLR R20
CB C007 RJMP 0x00D3
(0022) {
(0023) write_164(j);
CC 2F06 MOV R16,R22
CD DFBA RCALL _write_164
(0024) delay_ms(500);
CE EF04 LDI R16,0xF4
CF E011 LDI R17,1
D0 DF9C RCALL _delay_ms
(0025) j=j<<1;
FILE: <library>
D1 0F66 LSL R22
D2 9543 INC R20
D3 3048 CPI R20,0x8
D4 F3B8 BCS 0x00CC
D5 CFF3 RJMP 0x00C9
D6 9508 RET
push_xgsetF00C:
D7 937A ST R23,-Y
D8 936A ST R22,-Y
D9 935A ST R21,-Y
DA 934A ST R20,-Y
DB 92BA ST R11,-Y
DC 92AA ST R10,-Y
DD 9508 RET
pop_xgsetF00C:
DE 90A9 LD R10,Y+
DF 90B9 LD R11,Y+
E0 9149 LD R20,Y+
E1 9159 LD R21,Y+
E2 9169 LD R22,Y+
E3 9179 LD R23,Y+
E4 9508 RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -