📄 adc.lst
字号:
__start:
__text_start:
52 EFCF LDI R28,0xFF
53 E1D0 LDI R29,0x10
54 BFCD OUT 0x3D,R28
55 BFDE OUT 0x3E,R29
56 51CE SUBI R28,0x1E
57 40D0 SBCI R29,0
58 EA0A LDI R16,0xAA
59 8308 STD Y+0,R16
5A 2400 CLR R0
5B E1E8 LDI R30,0x18
5C E0F1 LDI R31,1
5D E011 LDI R17,1
5E 31E8 CPI R30,0x18
5F 07F1 CPC R31,R17
60 F011 BEQ 0x0063
61 9201 ST R0,Z+
62 CFFB RJMP 0x005E
63 8300 STD Z+0,R16
64 E8EC LDI R30,0x8C
65 E0F0 LDI R31,0
66 E0A0 LDI R26,0
67 E0B1 LDI R27,1
68 E010 LDI R17,0
69 E000 LDI R16,0
6A BF0B OUT 0x3B,R16
6B 3AE4 CPI R30,0xA4
6C 07F1 CPC R31,R17
6D F021 BEQ 0x0072
6E 95C8 LPM
6F 9631 ADIW R30,1
70 920D ST R0,X+
71 CFF9 RJMP 0x006B
72 940E 0267 CALL _main
_exit:
74 CFFF RJMP _exit
FILE: C:\DOCUME~1\wdd\桌面\模数转换\1602.h
(0001) #define uchar unsigned char
(0002) #define uint unsigned int
(0003)
(0004) #define RS 0
(0005) #define RW 1
(0006) #define EN 2
(0007)
(0008) void s_ms(uint ms)
(0009) {
(0010) for(;ms>1;ms--);
_s_ms:
ms --> R16
75 C002 RJMP 0x0078
76 5001 SUBI R16,1
77 4010 SBCI R17,0
78 E081 LDI R24,1
79 E090 LDI R25,0
7A 1780 CP R24,R16
7B 0791 CPC R25,R17
7C F3C8 BCS 0x0076
7D 9508 RET
_busy:
temp --> R20
7E 934A ST R20,-Y
(0011) }
(0012)
(0013) //查忙
(0014) void busy(void)
(0015) {
(0016) uchar temp;
(0017) s_ms(500);
7F EF04 LDI R16,0xF4
80 E011 LDI R17,1
81 DFF3 RCALL _s_ms
(0018) PORTG&=~(1<<RS); //RS=0
82 9180 0065 LDS R24,0x0065
84 7F8E ANDI R24,0xFE
85 9380 0065 STS 0x0065,R24
(0019) s_ms(500);
87 EF04 LDI R16,0xF4
88 E011 LDI R17,1
89 DFEB RCALL _s_ms
(0020) PORTG|=(1<<RW); //RW=1
8A 9180 0065 LDS R24,0x0065
8C 6082 ORI R24,2
8D 9380 0065 STS 0x0065,R24
(0021) s_ms(500);
8F EF04 LDI R16,0xF4
90 E011 LDI R17,1
91 DFE3 RCALL _s_ms
92 C022 RJMP 0x00B5
(0022) while(temp)
(0023) {
(0024) PORTG|=(1<<EN); //EN=1
93 9180 0065 LDS R24,0x0065
95 6084 ORI R24,4
96 9380 0065 STS 0x0065,R24
(0025) s_ms(500);
98 EF04 LDI R16,0xF4
99 E011 LDI R17,1
9A DFDA RCALL _s_ms
(0026) DDRA=0x00; //A口变输入
9B 2422 CLR R2
9C BA2A OUT 0x1A,R2
(0027) PORTA=0xff; //上拉使能
9D EF8F LDI R24,0xFF
9E BB8B OUT 0x1B,R24
(0028) s_ms(500);
9F EF04 LDI R16,0xF4
A0 E011 LDI R17,1
A1 DFD3 RCALL _s_ms
(0029) temp = PINA&0x80; //读取A口
A2 B349 IN R20,0x19
A3 7840 ANDI R20,0x80
(0030) s_ms(500);
A4 EF04 LDI R16,0xF4
A5 E011 LDI R17,1
A6 DFCE RCALL _s_ms
(0031) DDRA=0xff;
A7 EF8F LDI R24,0xFF
A8 BB8A OUT 0x1A,R24
(0032) PORTA=0xff; //A口变输出
A9 BB8B OUT 0x1B,R24
(0033) s_ms(500);
AA EF04 LDI R16,0xF4
AB E011 LDI R17,1
AC DFC8 RCALL _s_ms
(0034) PORTG&=~(1<<EN); //EN=0
AD 9180 0065 LDS R24,0x0065
AF 7F8B ANDI R24,0xFB
B0 9380 0065 STS 0x0065,R24
(0035) s_ms(500);
B2 EF04 LDI R16,0xF4
B3 E011 LDI R17,1
B4 DFC0 RCALL _s_ms
B5 2344 TST R20
B6 F6E1 BNE 0x0093
B7 9149 LD R20,Y+
B8 9508 RET
_writecom:
com --> R10
B9 92AA ST R10,-Y
BA 2EA0 MOV R10,R16
(0036) }
(0037) }
(0038)
(0039) //写指令
(0040) void writecom(uchar com)
(0041) {
(0042) busy();
BB DFC2 RCALL _busy
(0043) s_ms(500);
BC EF04 LDI R16,0xF4
BD E011 LDI R17,1
BE DFB6 RCALL _s_ms
(0044) PORTG&=~(1<<RS); //RS=0
BF 9180 0065 LDS R24,0x0065
C1 7F8E ANDI R24,0xFE
C2 9380 0065 STS 0x0065,R24
(0045) s_ms(500);
C4 EF04 LDI R16,0xF4
C5 E011 LDI R17,1
C6 DFAE RCALL _s_ms
(0046) PORTG&=~(1<<RW); //RW=0
C7 9180 0065 LDS R24,0x0065
C9 7F8D ANDI R24,0xFD
CA 9380 0065 STS 0x0065,R24
(0047) s_ms(500);
CC EF04 LDI R16,0xF4
CD E011 LDI R17,1
CE DFA6 RCALL _s_ms
(0048) PORTG|=(1<<EN); //EN=1
CF 9180 0065 LDS R24,0x0065
D1 6084 ORI R24,4
D2 9380 0065 STS 0x0065,R24
(0049) s_ms(500);
D4 EF04 LDI R16,0xF4
D5 E011 LDI R17,1
D6 DF9E RCALL _s_ms
(0050) PORTA = com; //输出指令
D7 BAAB OUT 0x1B,R10
(0051) s_ms(500);
D8 EF04 LDI R16,0xF4
D9 E011 LDI R17,1
DA DF9A RCALL _s_ms
(0052) PORTG&=~(1<<EN); //EN=0
DB 9180 0065 LDS R24,0x0065
DD 7F8B ANDI R24,0xFB
DE 9380 0065 STS 0x0065,R24
(0053) s_ms(500);
E0 EF04 LDI R16,0xF4
E1 E011 LDI R17,1
E2 DF92 RCALL _s_ms
E3 90A9 LD R10,Y+
E4 9508 RET
(0054) }
(0055)
(0056) //1602初始化
(0057) void LcdInit(void)
(0058) {
(0059) writecom(0x38);
_LcdInit:
E5 E308 LDI R16,0x38
E6 DFD2 RCALL _writecom
(0060) s_ms(1000);
E7 EE08 LDI R16,0xE8
E8 E013 LDI R17,3
E9 DF8B RCALL _s_ms
(0061) writecom(0x01);
EA E001 LDI R16,1
EB DFCD RCALL _writecom
(0062) s_ms(10000);
EC E100 LDI R16,0x10
ED E217 LDI R17,0x27
EE DF86 RCALL _s_ms
(0063) s_ms(1000);
EF EE08 LDI R16,0xE8
F0 E013 LDI R17,3
F1 DF83 RCALL _s_ms
(0064) s_ms(1000);
F2 EE08 LDI R16,0xE8
F3 E013 LDI R17,3
F4 DF80 RCALL _s_ms
(0065) s_ms(1000);
F5 EE08 LDI R16,0xE8
F6 E013 LDI R17,3
F7 DF7D RCALL _s_ms
(0066) s_ms(1000);
F8 EE08 LDI R16,0xE8
F9 E013 LDI R17,3
FA DF7A RCALL _s_ms
(0067) s_ms(1000);
FB EE08 LDI R16,0xE8
FC E013 LDI R17,3
FD DF77 RCALL _s_ms
(0068) s_ms(1000);
FE EE08 LDI R16,0xE8
FF E013 LDI R17,3
100 DF74 RCALL _s_ms
(0069) writecom(0x02);
101 E002 LDI R16,2
102 DFB6 RCALL _writecom
(0070) s_ms(1000);
103 EE08 LDI R16,0xE8
104 E013 LDI R17,3
105 DF6F RCALL _s_ms
(0071) writecom(0x06);
106 E006 LDI R16,6
107 DFB1 RCALL _writecom
(0072) s_ms(1000);
108 EE08 LDI R16,0xE8
109 E013 LDI R17,3
10A DF6A RCALL _s_ms
(0073) writecom(0x0c);
10B E00C LDI R16,0xC
10C DFAC RCALL _writecom
(0074) s_ms(1000);
10D EE08 LDI R16,0xE8
10E E013 LDI R17,3
10F DF65 RCALL _s_ms
(0075) writecom(0x38);
110 E308 LDI R16,0x38
111 DFA7 RCALL _writecom
(0076) s_ms(1000);
112 EE08 LDI R16,0xE8
113 E013 LDI R17,3
114 DF60 RCALL _s_ms
115 9508 RET
_writedata:
data --> R10
116 92AA ST R10,-Y
117 2EA0 MOV R10,R16
(0077) }
(0078)
(0079) //写数据
(0080) void writedata(uchar data)
(0081) {
(0082) busy();
118 DF65 RCALL _busy
(0083) s_ms(500);
119 EF04 LDI R16,0xF4
11A E011 LDI R17,1
11B DF59 RCALL _s_ms
(0084) PORTG|=(1<<RS); //RS=1
11C 9180 0065 LDS R24,0x0065
11E 6081 ORI R24,1
11F 9380 0065 STS 0x0065,R24
(0085) s_ms(500);
121 EF04 LDI R16,0xF4
122 E011 LDI R17,1
123 DF51 RCALL _s_ms
(0086) PORTG&=~(1<<RW); //RW=0
124 9180 0065 LDS R24,0x0065
126 7F8D ANDI R24,0xFD
127 9380 0065 STS 0x0065,R24
(0087) s_ms(500);
129 EF04 LDI R16,0xF4
12A E011 LDI R17,1
12B DF49 RCALL _s_ms
(0088) PORTG|=(1<<EN); //EN=1
12C 9180 0065 LDS R24,0x0065
12E 6084 ORI R24,4
12F 9380 0065 STS 0x0065,R24
(0089) s_ms(500);
131 EF04 LDI R16,0xF4
132 E011 LDI R17,1
133 DF41 RCALL _s_ms
(0090) PORTA = data; //输出数据
134 BAAB OUT 0x1B,R10
(0091) s_ms(500);
135 EF04 LDI R16,0xF4
136 E011 LDI R17,1
137 DF3D RCALL _s_ms
(0092) PORTG&=~(1<<EN); //EN=0
138 9180 0065 LDS R24,0x0065
13A 7F8B ANDI R24,0xFB
13B 9380 0065 STS 0x0065,R24
(0093) s_ms(500);
13D EF04 LDI R16,0xF4
13E E011 LDI R17,1
13F DF35 RCALL _s_ms
140 90A9 LD R10,Y+
141 9508 RET
_readdata:
temp --> R10
142 92AA ST R10,-Y
(0094) }
(0095)
(0096)
(0097) //读数据
(0098) uchar readdata(void)
(0099) {
(0100) uchar temp;
(0101) busy();
143 DF3A RCALL _busy
(0102) s_ms(500);
144 EF04 LDI R16,0xF4
145 E011 LDI R17,1
146 DF2E RCALL _s_ms
(0103) PORTG|=(1<<RS); //RS=1
147 9180 0065 LDS R24,0x0065
149 6081 ORI R24,1
14A 9380 0065 STS 0x0065,R24
(0104) s_ms(500);
14C EF04 LDI R16,0xF4
14D E011 LDI R17,1
14E DF26 RCALL _s_ms
(0105) PORTG|=(1<<RW); //RW=1
14F 9180 0065 LDS R24,0x0065
151 6082 ORI R24,2
152 9380 0065 STS 0x0065,R24
(0106) s_ms(500);
154 EF04 LDI R16,0xF4
155 E011 LDI R17,1
156 DF1E RCALL _s_ms
(0107) PORTG|=(1<<EN); //EN=1
157 9180 0065 LDS R24,0x0065
159 6084 ORI R24,4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -