📄 1602.lst
字号:
__start:
__text_start:
39 E5CF LDI R28,0x5F
3A E0D4 LDI R29,4
3B BFCD OUT 0x3D,R28
3C BFDE OUT 0x3E,R29
3D 51CE SUBI R28,0x1E
3E 40D0 SBCI R29,0
3F EA0A LDI R16,0xAA
40 8308 STD Y+0,R16
41 2400 CLR R0
42 E6E0 LDI R30,0x60
43 E0F0 LDI R31,0
44 E010 LDI R17,0
45 36E0 CPI R30,0x60
46 07F1 CPC R31,R17
47 F011 BEQ 0x004A
48 9201 ST R0,Z+
49 CFFB RJMP 0x0045
4A 8300 STD Z+0,R16
4B E7E1 LDI R30,0x71
4C E0F0 LDI R31,0
4D E6A0 LDI R26,0x60
4E E0B0 LDI R27,0
4F E010 LDI R17,0
50 E000 LDI R16,0
51 BF0B OUT 0x3B,R16
52 37E1 CPI R30,0x71
53 07F1 CPC R31,R17
54 F021 BEQ 0x0059
55 95C8 LPM
56 9631 ADIW R30,1
57 920D ST R0,X+
58 CFF9 RJMP 0x0052
59 940E 0089 CALL _main
_exit:
5B CFFF RJMP _exit
_delay:
i --> R20
j --> R22
ms --> R16
5C 940E 00D8 CALL push_xgsetF000
FILE: E:\训练\1602液晶\yejing.c
(0001) //ICC-AVR application builder : 2008-8-23 13:56:20
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004) // By:苏维孝
(0005) #include<iom16v.h>
(0006) #include<macros.h>
(0007) #define uchar unsigned char
(0008) #define uint unsigned int
(0009) #define ulong unsigned long
(0010) #pragma data:code
(0011) const uchar table1[]=" Welcom to";
5E 2744 CLR R20
5F 2755 CLR R21
60 C00B RJMP 0x006C
(0012) uchar n1=0,n2=0;
61 2766 CLR R22
62 2777 CLR R23
63 C002 RJMP 0x0066
64 5F6F SUBI R22,0xFF
65 4F7F SBCI R23,0xFF
66 3765 CPI R22,0x75
67 E0E4 LDI R30,4
68 077E CPC R23,R30
69 F3D0 BCS 0x0064
6A 5F4F SUBI R20,0xFF
6B 4F5F SBCI R21,0xFF
6C 1740 CP R20,R16
6D 0751 CPC R21,R17
6E F390 BCS 0x0061
6F 940C 00DD JMP pop_xgsetF000
_write_com:
com --> R10
71 92AA ST R10,-Y
72 2EA0 MOV R10,R16
(0013) ulong xdata=0;
(0014) float sdata=0.0;
(0015)
(0016) void delay(uint ms)//毫秒级延时程序
(0017) {
73 98DD CBI 0x1B,5
(0018) uint i,j;
74 98DE CBI 0x1B,6
(0019) for(i=0;i<ms;i++)
75 BAA8 OUT 0x18,R10
(0020) for(j=0;j<1141;j++);
76 9ADF SBI 0x1B,7
(0021) }
77 E001 LDI R16,1
78 E010 LDI R17,0
79 DFE2 RCALL _delay
(0022)
7A 98DF CBI 0x1B,7
7B 90A9 LD R10,Y+
7C 9508 RET
_write_dat:
dat --> R10
7D 92AA ST R10,-Y
7E 2EA0 MOV R10,R16
(0023) void write_com(uchar com)//写指令
(0024) {
(0025) PORTA&=~BIT(5);
(0026) PORTA&=~BIT(6);
(0027) PORTD=com;
7F 9ADD SBI 0x1B,5
(0028) PORTA|=BIT(7);
80 98DE CBI 0x1B,6
(0029) delay(1);
81 BAA8 OUT 0x18,R10
(0030) PORTA&=~BIT(7);
82 9ADF SBI 0x1B,7
(0031) }
83 E001 LDI R16,1
84 E010 LDI R17,0
85 DFD6 RCALL _delay
(0032)
86 98DF CBI 0x1B,7
87 90A9 LD R10,Y+
88 9508 RET
(0033) void write_dat(uchar dat)//写数据
(0034) {
(0035) PORTA|=BIT(5);
(0036) PORTA&=~BIT(6);
(0037) PORTD=dat;
(0038) PORTA|=BIT(7);
_main:
i --> R20
89 EF8F LDI R24,0xFF
8A BB87 OUT 0x17,R24
(0039) delay(1);
8B B38A IN R24,0x1A
8C 6E80 ORI R24,0xE0
8D BB8A OUT 0x1A,R24
(0040) PORTA&=~BIT(7);
8E 98DF CBI 0x1B,7
(0041) }
8F E308 LDI R16,0x38
90 DFE0 RCALL _write_com
(0042)
91 E005 LDI R16,5
92 E010 LDI R17,0
93 DFC8 RCALL _delay
(0043) void port_init(void)
94 E001 LDI R16,1
95 DFDB RCALL _write_com
(0044) {
96 E005 LDI R16,5
97 E010 LDI R17,0
98 DFC3 RCALL _delay
(0045) DDRA|=BIT(0);
(0046) PORTA&=~BIT(0); //不分频
99 E00C LDI R16,0xC
9A DFD6 RCALL _write_com
(0047) DDRD=0XFF;
9B E005 LDI R16,5
9C E010 LDI R17,0
9D DFBE RCALL _delay
(0048) DDRA|=BIT(5)|BIT(6)|BIT(7);
9E E006 LDI R16,6
9F DFD1 RCALL _write_com
(0049) PORTA&=~BIT(7);
A0 E005 LDI R16,5
A1 E010 LDI R17,0
A2 DFB9 RCALL _delay
(0050) }
A3 E900 LDI R16,0x90
A4 DFCC RCALL _write_com
(0051)
A5 E005 LDI R16,5
A6 E010 LDI R17,0
A7 DFB4 RCALL _delay
(0052) //TIMER0 initialize - prescale:1024
A8 2744 CLR R20
A9 C00C RJMP 0x00B6
(0053) // WGM: Normal
(0054) // desired value: 20mSec
AA E584 LDI R24,0x54
AB E090 LDI R25,0
AC 2FE4 MOV R30,R20
AD 27FF CLR R31
AE 0FE8 ADD R30,R24
AF 1FF9 ADC R31,R25
B0 9104 LPM R16,0(Z)
B1 DFCB RCALL _write_dat
(0055) // actual value: 19.968mSec (0.2%)
B2 E005 LDI R16,5
B3 E010 LDI R17,0
B4 DFA7 RCALL _delay
B5 9543 INC R20
B6 304C CPI R20,0xC
B7 F390 BCS 0x00AA
(0056) void timer0_init(void)
(0057) {
B8 ED00 LDI R16,0xD0
B9 DFB7 RCALL _write_com
(0058) n1++;
BA E005 LDI R16,5
BB E010 LDI R17,0
BC DF9F RCALL _delay
(0059) if(n1==50) //定时一秒中断服务函数
BD 2744 CLR R20
BE C00C RJMP 0x00CB
(0060) {
(0061) CLI();
BF E681 LDI R24,0x61
C0 E090 LDI R25,0
C1 2FE4 MOV R30,R20
C2 27FF CLR R31
C3 0FE8 ADD R30,R24
C4 1FF9 ADC R31,R25
C5 9104 LPM R16,0(Z)
C6 DFB6 RCALL _write_dat
(0062) n1=0;
C7 E005 LDI R16,5
C8 E010 LDI R17,0
C9 DF92 RCALL _delay
CA 9543 INC R20
CB 304F CPI R20,0xF
CC F390 BCS 0x00BF
(0063) TCNT1H = 0x00;
(0064) TCNT1L = 0x00;
CD 2744 CLR R20
CE C006 RJMP 0x00D5
(0065) xdata=TCNT1L+TCNT1H*256+n2*65536;
(0066) n2=0;
CF E10C LDI R16,0x1C
D0 DFA0 RCALL _write_com
(0067) SEI();
FILE: <library>
D1 EE06 LDI R16,0xE6
D2 E010 LDI R17,0
D3 DF88 RCALL _delay
D4 9543 INC R20
D5 3140 CPI R20,0x10
D6 F3C0 BCS 0x00CF
D7 9508 RET
push_xgsetF000:
D8 937A ST R23,-Y
D9 936A ST R22,-Y
DA 935A ST R21,-Y
DB 934A ST R20,-Y
DC 9508 RET
pop_xgsetF000:
DD 9149 LD R20,Y+
DE 9159 LD R21,Y+
DF 9169 LD R22,Y+
E0 9179 LD R23,Y+
E1 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -