📄 lcd1602.lss
字号:
1a8: 85 b3 in r24, 0x15 ; 21
1aa: 81 2b or r24, r17
1ac: 85 bb out 0x15, r24 ; 21
1ae: c2 98 cbi 0x18, 2 ; 24
1b0: 81 e0 ldi r24, 0x01 ; 1
1b2: 80 df rcall .-256 ; 0xb4
1b4: 80 e0 ldi r24, 0x00 ; 0
1b6: 85 df rcall .-246 ; 0xc2
1b8: 1f 91 pop r17
1ba: 08 95 ret
000001bc <Lcd_SetXy>:
}
/********************************************************
* 函数说明:设置显示坐标函数 *
********************************************************/
void Lcd_SetXy(char x,char y)
{
1bc: 98 2f mov r25, r24
char ucAddress;
if(y == 0)
1be: 66 23 and r22, r22
1c0: 19 f4 brne .+6 ; 0x1c8
ucAddress = 0x80 + x;
1c2: 89 2f mov r24, r25
1c4: 80 58 subi r24, 0x80 ; 128
1c6: 02 c0 rjmp .+4 ; 0x1cc
else
ucAddress = 0xc0 + x;
1c8: 89 2f mov r24, r25
1ca: 80 54 subi r24, 0x40 ; 64
Lcd_SetCmd(ucAddress);
1cc: 81 df rcall .-254 ; 0xd0
1ce: 08 95 ret
000001d0 <Lcd_PutChar>:
}
/********************************************************
* 函数说明:显示一个字符 *
********************************************************/
void Lcd_PutChar(char ucChar)
{
Lcd_SetData(ucChar);
1d0: d1 df rcall .-94 ; 0x174
1d2: 08 95 ret
000001d4 <Lcd_PutStr>:
}
/********************************************************
* 函数说明:显示一串字符 *
********************************************************/
void Lcd_PutStr(char* ucStr)
{
1d4: cf 93 push r28
1d6: df 93 push r29
1d8: ec 01 movw r28, r24
while(*ucStr)
{
Lcd_SetData(*ucStr);
ucStr++;
1da: 88 81 ld r24, Y
1dc: 88 23 and r24, r24
1de: 29 f0 breq .+10 ; 0x1ea
1e0: 89 91 ld r24, Y+
1e2: c8 df rcall .-112 ; 0x174
1e4: 88 81 ld r24, Y
1e6: 88 23 and r24, r24
1e8: d9 f7 brne .-10 ; 0x1e0
1ea: df 91 pop r29
1ec: cf 91 pop r28
1ee: 08 95 ret
000001f0 <Lcd_TestFunc>:
}
}
//测试函数
void Lcd_TestFunc(void)
{
1f0: 08 95 ret
000001f2 <Uart_Init>:
14.4K 86 68 34 16 8 3
*/
//初始化
void Uart_Init(unsigned int ucBaudRate) //9600 :25/4m 38/6m
{
1f2: 9c 01 movw r18, r24
// 晶振频率 : 4.0MHz
// 通信参数: 8 Data, 1 Stop, No Parity
// 波特率:
// UBRRL= 0x0C 19200;
// UBRRL= 0x19 9600;
// UBRRL= 0x33 4800;
// UBRRL= 0x67 2400
UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); //允许发送和接收,接收中断使能
1f4: 8a b1 in r24, 0x0a ; 10
1f6: 88 69 ori r24, 0x98 ; 152
1f8: 8a b9 out 0x0a, r24 ; 10
UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8位数据位+1位停止位
1fa: 80 b5 in r24, 0x20 ; 32
1fc: 86 68 ori r24, 0x86 ; 134
1fe: 80 bd out 0x20, r24 ; 32
UBRRH = (unsigned char)(ucBaudRate >> 8);
200: 83 2f mov r24, r19
202: 99 27 eor r25, r25
204: 80 bd out 0x20, r24 ; 32
UBRRL = (unsigned char)(ucBaudRate & 0x7f);
206: 82 2f mov r24, r18
208: 8f 77 andi r24, 0x7F ; 127
20a: 89 b9 out 0x09, r24 ; 9
fdevopen(Uart_PutChar,Uart_GetChar,0);
20c: 40 e0 ldi r20, 0x00 ; 0
20e: 50 e0 ldi r21, 0x00 ; 0
210: 6b e1 ldi r22, 0x1B ; 27
212: 71 e0 ldi r23, 0x01 ; 1
214: 8e e0 ldi r24, 0x0E ; 14
216: 91 e0 ldi r25, 0x01 ; 1
218: 34 d0 rcall .+104 ; 0x282
21a: 08 95 ret
0000021c <Uart_PutChar>:
}
//输出一个字符
int Uart_PutChar(char c)
{
21c: cf 93 push r28
21e: c8 2f mov r28, r24
if(c=='\n')
220: 8a 30 cpi r24, 0x0A ; 10
222: 11 f4 brne .+4 ; 0x228
Uart_PutChar('\r');
224: 8d e0 ldi r24, 0x0D ; 13
226: fa df rcall .-12 ; 0x21c
loop_until_bit_is_set(UCSRA,UDRE);
228: 5d 9b sbis 0x0b, 5 ; 11
22a: fe cf rjmp .-4 ; 0x228
UDR = c;
22c: cc b9 out 0x0c, r28 ; 12
return 0;
}
22e: 80 e0 ldi r24, 0x00 ; 0
230: 90 e0 ldi r25, 0x00 ; 0
232: cf 91 pop r28
234: 08 95 ret
00000236 <Uart_GetChar>:
//输入一个字符
int Uart_GetChar(void)
{
loop_until_bit_is_set(UCSRA,RXC);
236: 5f 9b sbis 0x0b, 7 ; 11
238: fe cf rjmp .-4 ; 0x236
return UDR;
23a: 8c b1 in r24, 0x0c ; 12
}
23c: 99 27 eor r25, r25
23e: 08 95 ret
00000240 <Uart_PutStr>:
//输出一个字符串
void Uart_PutStr(unsigned char* szStr)
{
240: cf 93 push r28
242: df 93 push r29
244: ec 01 movw r28, r24
while(*szStr != '\0')
{
Uart_PutChar(*szStr);
szStr++;
246: 88 81 ld r24, Y
248: 88 23 and r24, r24
24a: 29 f0 breq .+10 ; 0x256
24c: 89 91 ld r24, Y+
24e: e6 df rcall .-52 ; 0x21c
250: 88 81 ld r24, Y
252: 88 23 and r24, r24
254: d9 f7 brne .-10 ; 0x24c
256: df 91 pop r29
258: cf 91 pop r28
25a: 08 95 ret
0000025c <DelayUs>:
void DelayUs(unsigned int Time)
{
unsigned int a = 0;
for (a = 0;a<Time;a++)
25c: 00 97 sbiw r24, 0x00 ; 0
25e: 19 f0 breq .+6 ; 0x266
{
asm("nop");
260: 00 00 nop
262: 01 97 sbiw r24, 0x01 ; 1
264: fb cf rjmp .-10 ; 0x25c
266: 08 95 ret
00000268 <DelayMs>:
}
}
/********************************************************
* 函数说明:毫秒延时函数(8M) *
* 输入: 需要延时的时间长度 *
********************************************************/
void DelayMs(unsigned int Time)
{
268: cf 93 push r28
26a: df 93 push r29
unsigned int Temp = 0;
for (Temp = 0;Temp < Time;Temp++)
26c: 00 97 sbiw r24, 0x00 ; 0
26e: 31 f0 breq .+12 ; 0x27c
270: ec 01 movw r28, r24
{
DelayUs(1710);
272: 8e ea ldi r24, 0xAE ; 174
274: 96 e0 ldi r25, 0x06 ; 6
276: f2 df rcall .-28 ; 0x25c
278: 21 97 sbiw r28, 0x01 ; 1
27a: d9 f7 brne .-10 ; 0x272
27c: df 91 pop r29
27e: cf 91 pop r28
280: 08 95 ret
00000282 <fdevopen>:
282: 0f 93 push r16
284: 1f 93 push r17
286: cf 93 push r28
288: df 93 push r29
28a: 8c 01 movw r16, r24
28c: eb 01 movw r28, r22
28e: 00 97 sbiw r24, 0x00 ; 0
290: 11 f4 brne .+4 ; 0x296
292: 67 2b or r22, r23
294: a9 f1 breq .+106 ; 0x300
296: 6c e0 ldi r22, 0x0C ; 12
298: 70 e0 ldi r23, 0x00 ; 0
29a: 81 e0 ldi r24, 0x01 ; 1
29c: 90 e0 ldi r25, 0x00 ; 0
29e: a6 d0 rcall .+332 ; 0x3ec
2a0: fc 01 movw r30, r24
2a2: 89 2b or r24, r25
2a4: 61 f1 breq .+88 ; 0x2fe
2a6: 20 97 sbiw r28, 0x00 ; 0
2a8: 71 f0 breq .+28 ; 0x2c6
2aa: c2 87 std Z+10, r28 ; 0x0a
2ac: d3 87 std Z+11, r29 ; 0x0b
2ae: 81 e0 ldi r24, 0x01 ; 1
2b0: 83 83 std Z+3, r24 ; 0x03
2b2: 80 91 72 00 lds r24, 0x0072
2b6: 90 91 73 00 lds r25, 0x0073
2ba: 89 2b or r24, r25
2bc: 21 f4 brne .+8 ; 0x2c6
2be: f0 93 73 00 sts 0x0073, r31
2c2: e0 93 72 00 sts 0x0072, r30
2c6: 01 15 cp r16, r1
2c8: 11 05 cpc r17, r1
2ca: c9 f0 breq .+50 ; 0x2fe
2cc: 00 87 std Z+8, r16 ; 0x08
2ce: 11 87 std Z+9, r17 ; 0x09
2d0: 83 81 ldd r24, Z+3 ; 0x03
2d2: 82 60 ori r24, 0x02 ; 2
2d4: 83 83 std Z+3, r24 ; 0x03
2d6: 80 91 74 00 lds r24, 0x0074
2da: 90 91 75 00 lds r25, 0x0075
2de: 89 2b or r24, r25
2e0: 71 f4 brne .+28 ; 0x2fe
2e2: f0 93 75 00 sts 0x0075, r31
2e6: e0 93 74 00 sts 0x0074, r30
2ea: 80 91 76 00 lds r24, 0x0076
2ee: 90 91 77 00 lds r25, 0x0077
2f2: 89 2b or r24, r25
2f4: 21 f4 brne .+8 ; 0x2fe
2f6: f0 93 77 00 sts 0x0077, r31
2fa: e0 93 76 00 sts 0x0076, r30
2fe: cf 01 movw r24, r30
300: df 91 pop r29
302: cf 91 pop r28
304: 1f 91 pop r17
306: 0f 91 pop r16
308: 08 95 ret
0000030a <fgetc>:
30a: cf 93 push r28
30c: df 93 push r29
30e: ec 01 movw r28, r24
310: 4b 81 ldd r20, Y+3 ; 0x03
312: 84 2f mov r24, r20
314: 99 27 eor r25, r25
316: 80 ff sbrs r24, 0
318: 1b c0 rjmp .+54 ; 0x350
31a: 86 ff sbrs r24, 6
31c: 09 c0 rjmp .+18 ; 0x330
31e: 4f 7b andi r20, 0xBF ; 191
320: 4b 83 std Y+3, r20 ; 0x03
322: 8e 81 ldd r24, Y+6 ; 0x06
324: 9f 81 ldd r25, Y+7 ; 0x07
326: 01 96 adiw r24, 0x01 ; 1
328: 8e 83 std Y+6, r24 ; 0x06
32a: 9f 83 std Y+7, r25 ; 0x07
32c: 8a 81 ldd r24, Y+2 ; 0x02
32e: 26 c0 rjmp .+76 ; 0x37c
330: 82 ff sbrs r24, 2
332: 11 c0 rjmp .+34 ; 0x356
334: e8 81 ld r30, Y
336: f9 81 ldd r31, Y+1 ; 0x01
338: 81 91 ld r24, Z+
33a: 28 2f mov r18, r24
33c: 33 27 eor r19, r19
33e: 27 fd sbrc r18, 7
340: 30 95 com r19
342: e8 83 st Y, r30
344: f9 83 std Y+1, r31 ; 0x01
346: 21 15 cp r18, r1
348: 31 05 cpc r19, r1
34a: 91 f4 brne .+36 ; 0x370
34c: 40 62 ori r20, 0x20 ; 32
34e: 4b 83 std Y+3, r20 ; 0x03
350: 8f ef ldi r24, 0xFF ; 255
352: 9f ef ldi r25, 0xFF ; 255
354: 14 c0 rjmp .+40 ; 0x37e
356: ea 85 ldd r30, Y+10 ; 0x0a
358: fb 85 ldd r31, Y+11 ; 0x0b
35a: 09 95 icall
35c: 9c 01 movw r18, r24
35e: 8f ef ldi r24, 0xFF ; 255
360: 2f 3f cpi r18, 0xFF ; 255
362: 38 07 cpc r19, r24
364: 29 f4 brne .+10 ; 0x370
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -