📄 zz.lst
字号:
Interrupt Vectors
00000 940C 0053 JMP __text_start|__start
Program Code (text area)
__text_start|__start:
00053 E5CF LDI R28,0x5F
00054 E0D4 LDI R29,4
00055 BFCD OUT 0x3D,R28
00056 BFDE OUT 0x3E,R29
00057 51C0 SUBI R28,0x10
00058 40D0 SBCI R29,0
00059 EA0A LDI R16,0xAA
0005A 8308 ST Y,R16
0005B 2400 CLR R0
0005C EAE1 LDI R30,0xA1
0005D E0F0 LDI R31,0
0005E E010 LDI R17,0
0005F 3BEA CPI R30,0xBA
00060 07F1 CPC R31,R17
00061 F011 BEQ 0x0064
00062 9201 ST Z+,R0
00063 CFFB RJMP 0x005F
00064 8300 ST Z,R16
00065 E6E4 LDI R30,0x64
00066 E0F0 LDI R31,0
00067 E6A0 LDI R26,0x60
00068 E0B0 LDI R27,0
00069 E010 LDI R17,0
0006A E000 LDI R16,0
0006B BF0B OUT 0x3B,R16
0006C 3AE5 CPI R30,0xA5
0006D 07F1 CPC R31,R17
0006E F021 BEQ 0x0073
0006F 95C8 LPM
00070 9631 ADIW R30,1
00071 920D ST X+,R0
00072 CFF9 RJMP 0x006C
00073 940E 03AB CALL _main
_exit:
00075 CFFF RJMP _exit
FILE: C:\DOCUME~1\Administrator\桌面\12864_~1\12864.h
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005)
(0006) #define clk 7
(0007) #define set_clk PORTC |= BIT(clk)
(0008) #define clr_clk PORTC &= ~BIT(clk)
(0009)
(0010) #define sid 6
(0011) #define clr_sid PORTC &= ~BIT(sid)
(0012) #define set_sid PORTC |= BIT(sid)
(0013)
(0014) void delay()
(0015) {
(0016) NOP();
_delay:
00076 0000 NOP
(0017) NOP();
00077 0000 NOP
00078 9508 RET
(0018) }
(0019) void delay_us(uint i)
(0020) {
(0021) while(i--)
_delay_us:
i --> R16
00079 0118 MOVW R2,R16
0007A 5001 SUBI R16,1
0007B 4010 SBCI R17,0
0007C 2022 TST R2
0007D F7D9 BNE 0x0079
0007E 2033 TST R3
0007F F7C9 BNE 0x0079
00080 9508 RET
_delay_ms:
a --> R20
i --> R16
00081 934A ST -Y,R20
00082 935A ST -Y,R21
(0022) {;}
(0023) }
(0024) void delay_ms(uint i)
(0025) {
(0026) uint a;
(0027) for(;i;i--)
00083 C00B RJMP 0x008F
(0028) {
(0029) for(a=0;a<672;a++);
00084 2744 CLR R20
00085 2755 CLR R21
00086 C002 RJMP 0x0089
00087 5F4F SUBI R20,0xFF
00088 4F5F SBCI R21,0xFF
00089 3A40 CPI R20,0xA0
0008A E0E2 LDI R30,2
0008B 075E CPC R21,R30
0008C F3D0 BCS 0x0087
0008D 5001 SUBI R16,1
0008E 4010 SBCI R17,0
0008F 3000 CPI R16,0
00090 0701 CPC R16,R17
00091 F791 BNE 0x0084
00092 9159 LD R21,Y+
00093 9149 LD R20,Y+
00094 9508 RET
_wr_bit:
data --> R10
n --> R12
00095 92AA ST -Y,R10
00096 92CA ST -Y,R12
00097 2EA2 MOV R10,R18
00098 2EC0 MOV R12,R16
(0030) }
(0031) }
(0032) void wr_bit(uchar n,uchar data)
(0033) {
(0034) for(;n;n--) //写入位数
00099 C00B RJMP 0x00A5
(0035) {
(0036) if(data&0x80)
0009A FEA7 SBRS R10,7
0009B C002 RJMP 0x009E
(0037) {set_sid;}
0009C 9AAE SBI 0x15,6
0009D C001 RJMP 0x009F
(0038) else
(0039) {clr_sid;}
0009E 98AE CBI 0x15,6
(0040) data=data<<1;
0009F 0CAA LSL R10
(0041) delay();
000A0 DFD5 RCALL _delay
(0042) set_clk;
000A1 9AAF SBI 0x15,7
(0043) delay();
000A2 DFD3 RCALL _delay
(0044) clr_clk;
000A3 98AF CBI 0x15,7
000A4 94CA DEC R12
000A5 20CC TST R12
000A6 F799 BNE 0x009A
000A7 90C9 LD R12,Y+
000A8 90A9 LD R10,Y+
000A9 9508 RET
_write_shuju:
b --> R20
a --> R10
000AA 92AA ST -Y,R10
000AB 934A ST -Y,R20
000AC 2F42 MOV R20,R18
000AD 2EA0 MOV R10,R16
(0045) }
(0046) }
(0047) void write_shuju(uchar a,uchar b)
(0048) {
(0049) clr_clk;
000AE 98AF CBI 0x15,7
(0050)
(0051) wr_bit(5,0xFF);
000AF EF2F LDI R18,0xFF
000B0 E005 LDI R16,5
000B1 DFE3 RCALL _wr_bit
(0052)
(0053) wr_bit(1,0x00);
000B2 2722 CLR R18
000B3 E001 LDI R16,1
000B4 DFE0 RCALL _wr_bit
(0054)
(0055) if(a==0)
000B5 20AA TST R10
000B6 F421 BNE 0x00BB
(0056) wr_bit(1,0x00);
000B7 2722 CLR R18
000B8 E001 LDI R16,1
000B9 DFDB RCALL _wr_bit
000BA C003 RJMP 0x00BE
(0057) else
(0058) wr_bit(1,0x80);
000BB E820 LDI R18,0x80
000BC E001 LDI R16,1
000BD DFD7 RCALL _wr_bit
(0059)
(0060) wr_bit(1,0x00); //写入一个0
000BE 2722 CLR R18
000BF E001 LDI R16,1
000C0 DFD4 RCALL _wr_bit
(0061)
(0062) wr_bit(4,b); //写入数据的高4位
000C1 2F24 MOV R18,R20
000C2 E004 LDI R16,4
000C3 DFD1 RCALL _wr_bit
(0063)
(0064) wr_bit(4,0x00); //写入4个0
000C4 2722 CLR R18
000C5 E004 LDI R16,4
000C6 DFCE RCALL _wr_bit
(0065)
(0066) wr_bit(4,(b<<4)); //写入数据的低4位
000C7 2F24 MOV R18,R20
000C8 702F ANDI R18,0xF
000C9 9522 SWAP R18
000CA E004 LDI R16,4
000CB DFC9 RCALL _wr_bit
(0067)
(0068) wr_bit(4,0x00); //写入4个0
000CC 2722 CLR R18
000CD E004 LDI R16,4
000CE DFC6 RCALL _wr_bit
(0069)
(0070) set_sid;
000CF 9AAE SBI 0x15,6
000D0 9149 LD R20,Y+
000D1 90A9 LD R10,Y+
000D2 9508 RET
(0071) }
(0072) void lcd12864_init()
(0073) {
(0074) write_shuju(0,0x30); //设置数据方式:8位
_lcd12864_init:
000D3 E320 LDI R18,0x30
000D4 2700 CLR R16
000D5 DFD4 RCALL _write_shuju
(0075) delay_us(200);
000D6 EC08 LDI R16,0xC8
000D7 E010 LDI R17,0
000D8 DFA0 RCALL _delay_us
(0076) write_shuju(0,0x30); //设置数据方式:8位
000D9 E320 LDI R18,0x30
000DA 2700 CLR R16
000DB DFCE RCALL _write_shuju
(0077) delay_us(80);
000DC E500 LDI R16,0x50
000DD E010 LDI R17,0
000DE DF9A RCALL _delay_us
(0078) write_shuju(0,0x0C); //开显示
000DF E02C LDI R18,0xC
000E0 2700 CLR R16
000E1 DFC8 RCALL _write_shuju
(0079) delay_us(80);
000E2 E500 LDI R16,0x50
000E3 E010 LDI R17,0
000E4 DF94 RCALL _delay_us
(0080) write_shuju(0,0x40); //开显示
000E5 E420 LDI R18,0x40
000E6 2700 CLR R16
000E7 DFC2 RCALL _write_shuju
(0081) delay_us(200);
000E8 EC08 LDI R16,0xC8
000E9 E010 LDI R17,0
000EA DF8E RCALL _delay_us
(0082) write_shuju(0,0x01); //清屏
000EB E021 LDI R18,1
000EC 2700 CLR R16
000ED DFBC RCALL _write_shuju
(0083) delay_ms(100);
000EE E604 LDI R16,0x64
000EF E010 LDI R17,0
000F0 CF90 RJMP _delay_ms
_write_hz:
s --> R20
000F1 934A ST -Y,R20
000F2 935A ST -Y,R21
000F3 01A8 MOVW R20,R16
(0084)
(0085) }
(0086) void write_hz(char *s)
(0087) {
000F4 C006 RJMP 0x00FB
(0088) while(*s)
(0089) {
(0090) write_shuju(1,*s);
000F5 01FA MOVW R30,R20
000F6 8120 LD R18,Z
000F7 E001 LDI R16,1
000F8 DFB1 RCALL _write_shuju
(0091) s++;
000F9 5F4F SUBI R20,0xFF
000FA 4F5F SBCI R21,0xFF
000FB 01FA MOVW R30,R20
000FC 8020 LD R2,Z
000FD 2022 TST R2
000FE F7B1 BNE 0x00F5
000FF 9159 LD R21,Y+
00100 9149 LD R20,Y+
00101 9508 RET
_locate:
y --> R20
x --> R10
00102 940E 0495 CALL push_xgsetF00C
00104 2F42 MOV R20,R18
00105 2EA0 MOV R10,R16
(0092) }
(0093) }
(0094) void locate(uchar x,uchar y)
(0095) {
(0096) switch(x)
00106 2D6A MOV R22,R10
00107 2777 CLR R23
00108 3061 CPI R22,1
00109 E0E0 LDI R30,0
0010A 077E CPC R23,R30
0010B F069 BEQ 0x0119
0010C 3062 CPI R22,2
0010D E0E0 LDI R30,0
0010E 077E CPC R23,R30
0010F F079 BEQ 0x011F
00110 3063 CPI R22,3
00111 E0E0 LDI R30,0
00112 077E CPC R23,R30
00113 F089 BEQ 0x0125
00114 3064 CPI R22,4
00115 E0E0 LDI R30,0
00116 077E CPC R23,R30
00117 F099 BEQ 0x012B
00118 C017 RJMP 0x0130
(0097) {
(0098) case 1:write_shuju(0,(0x80+y-1)); break;
00119 2F24 MOV R18,R20
0011A 5820 SUBI R18,0x80
0011B 5021 SUBI R18,1
0011C 2700 CLR R16
0011D DF8C RCALL _write_shuju
0011E C011 RJMP 0x0130
(0099) case 2:write_shuju(0,(0x90+y-1));break;
0011F 2F24 MOV R18,R20
00120 5720 SUBI R18,0x70
00121 5021 SUBI R18,1
00122 2700 CLR R16
00123 DF86 RCALL _write_shuju
00124 C00B RJMP 0x0130
(0100) case 3:write_shuju(0,(0x88+y-1));break;
00125 2F24 MOV R18,R20
00126 5728 SUBI R18,0x78
00127 5021 SUBI R18,1
00128 2700 CLR R16
00129 DF80 RCALL _write_shuju
0012A C005 RJMP 0x0130
(0101) case 4:write_shuju(0,(0x98+y-1));break;
0012B 2F24 MOV R18,R20
0012C 5628 SUBI R18,0x68
0012D 5021 SUBI R18,1
0012E 2700 CLR R16
0012F DF7A RCALL _write_shuju
(0102) default:break;
00130 940C 049C JMP pop_xgsetF00C
(0103) }
(0104) }
(0105) void cls()
(0106) {
(0107) delay_us(200);
_cls:
00132 EC08 LDI R16,0xC8
00133 E010 LDI R17,0
00134 DF44 RCALL _delay_us
(0108) write_shuju(0,0x01); //清屏
00135 E021 LDI R18,1
00136 2700 CLR R16
00137 DF72 RCALL _write_shuju
(0109) delay_ms(20);
00138 E104 LDI R16,0x14
00139 E010 LDI R17,0
0013A CF46 RJMP _delay_ms
_mega16_adc:
addata --> R10
0013B 92AA ST -Y,R10
0013C 92BA ST -Y,R11
FILE: C:\DOCUME~1\Administrator\桌面\12864_~1\adc.h
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) uint mega16_adc()
(0006) {
(0007) uint addata;
(0008) DDRA&=~BIT(0);
0013D 98D0 CBI 0x1A,0
(0009) PORTA&=~BIT(0);
0013E 98D8 CBI 0x1B,0
(0010) ADMUX=0x40;
0013F E480 LDI R24,0x40
00140 B987 OUT 0x07,R24
(0011) ADCSR=0X80;
00141 E880 LDI R24,0x80
00142 B986 OUT 0x06,R24
(0012) ADCSR|=BIT(6);
00143 9A36 SBI 0x06,6
(0013) while(!(ADCSR&(BIT(4))));
00144 9B34 SBIS 0x06,4
00145 CFFE RJMP 0x0144
(0014) addata=ADCL;
00146 B0A4 IN R10,0x04
00147 24BB CLR R11
(0015) addata=addata+ADCH*256;
00148 B125 IN R18,0x05
00149 2733 CLR R19
0014A E000 LDI R16,0
0014B E011 LDI R17,1
0014C 940E 0485 CALL empy16s
0014E 0EA0 ADD R10,R16
0014F 1EB1 ADC R11,R17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -