📄 child.lis
字号:
00CA ; mod=addr;
00CA 6C2D mov R22,R12
00CC .dbline 84
00CC ; for(i=0;i<6;i++)
00CC 4427 clr R20
00CE 0FC0 xjmp L36
00D0 L33:
00D0 .dbline 85
00D0 ; {
00D0 .dbline 86
00D0 ; if((mod&0x01)==0x01)
00D0 862F mov R24,R22
00D2 8170 andi R24,1
00D4 8130 cpi R24,1
00D6 11F4 brne L37
00D8 .dbline 87
00D8 ; set_data;
00D8 C39A sbi 0x18,3
00DA 01C0 xjmp L38
00DC L37:
00DC .dbline 89
00DC ; else
00DC ; clr_data;
00DC C398 cbi 0x18,3
00DE L38:
00DE .dbline 90
00DE C498 cbi 0x18,4
00E0 .dbline 91
00E0 08E0 ldi R16,8
00E2 8EDF xcall _delay_us
00E4 .dbline 92
00E4 C49A sbi 0x18,4
00E6 .dbline 93
00E6 6695 lsr R22
00E8 .dbline 94
00E8 08E0 ldi R16,8
00EA 8ADF xcall _delay_us
00EC .dbline 95
00EC L34:
00EC .dbline 84
00EC 4395 inc R20
00EE L36:
00EE .dbline 84
00EE 4630 cpi R20,6
00F0 78F3 brlo L33
00F2 .dbline 97
00F2 ; clr_wr;
00F2 ; delay_us(8);
00F2 ; set_wr;
00F2 ; mod=mod>>1;
00F2 ; delay_us(8);
00F2 ; }
00F2 ;
00F2 ; mod=data;
00F2 6A2D mov R22,R10
00F4 .dbline 98
00F4 ; for(i=0;i<8;i++)
00F4 4427 clr R20
00F6 0FC0 xjmp L42
00F8 L39:
00F8 .dbline 99
00F8 ; {
00F8 .dbline 100
00F8 ; if((mod&0x01)==0x01)
00F8 862F mov R24,R22
00FA 8170 andi R24,1
00FC 8130 cpi R24,1
00FE 11F4 brne L43
0100 .dbline 101
0100 ; set_data;
0100 C39A sbi 0x18,3
0102 01C0 xjmp L44
0104 L43:
0104 .dbline 103
0104 ; else
0104 ; clr_data;
0104 C398 cbi 0x18,3
0106 L44:
0106 .dbline 104
0106 C498 cbi 0x18,4
0108 .dbline 105
0108 08E0 ldi R16,8
010A 7ADF xcall _delay_us
010C .dbline 106
010C C49A sbi 0x18,4
010E .dbline 107
010E 6695 lsr R22
0110 .dbline 108
0110 08E0 ldi R16,8
0112 76DF xcall _delay_us
0114 .dbline 109
0114 L40:
0114 .dbline 98
0114 4395 inc R20
0116 L42:
0116 .dbline 98
0116 4830 cpi R20,8
0118 78F3 brlo L39
011A .dbline 110
011A ; clr_wr;
011A ; delay_us(8);
011A ; set_wr;
011A ; mod=mod>>1;
011A ; delay_us(8);
011A ; }
011A ; set_cs;
011A 979A sbi 0x12,7
011C .dbline -2
011C .dbline 111
011C ; }
011C L26:
011C 0E940000 xcall pop_gset4
0120 .dbline 0 ; func end
0120 0895 ret
0122 .dbsym r i 20 c
0122 .dbsym r mod 22 c
0122 .dbsym r data 10 c
0122 .dbsym r addr 12 c
0122 .dbend
0122 .dbfunc e init_lcd _init_lcd fV
.even
0122 _init_lcd::
0122 .dbline -1
0122 .dbline 114
0122 ; //initialize the lcd.
0122 ; void init_lcd(void)
0122 ; {
0122 .dbline 115
0122 ; send_cmd(0x18);
0122 08E1 ldi R16,24
0124 89DF xcall _send_cmd
0126 .dbline 116
0126 ; send_cmd(0x01);
0126 01E0 ldi R16,1
0128 87DF xcall _send_cmd
012A .dbline 117
012A ; send_cmd(0x03);
012A 03E0 ldi R16,3
012C 85DF xcall _send_cmd
012E .dbline 118
012E ; send_cmd(0x29);
012E 09E2 ldi R16,41
0130 .dbline -2
0130 .dbline 119
0130 ; }
0130 L45:
0130 .dbline 0 ; func end
0130 83CF xjmp _send_cmd
0132 .dbend
0132 .dbfunc e display _display fV
0132 ; i -> R20
0132 ; k -> R22
0132 ; data -> R10
.even
0132 _display::
0132 0E940000 xcall push_gset3
0136 A02E mov R10,R16
0138 .dbline -1
0138 .dbline 122
0138 ; //display full screen or clear the screen.
0138 ; void display(unsigned char data)
0138 ; {
0138 .dbline 124
0138 ; unsigned char i,k;
0138 ; k=0;
0138 6627 clr R22
013A .dbline 125
013A ; for(i=0;i<16;i++)
013A 4427 clr R20
013C 06C0 xjmp L50
013E L47:
013E .dbline 126
013E .dbline 127
013E 2A2D mov R18,R10
0140 062F mov R16,R22
0142 AADF xcall _send_data
0144 .dbline 128
0144 6395 inc R22
0146 .dbline 129
0146 6395 inc R22
0148 .dbline 130
0148 L48:
0148 .dbline 125
0148 4395 inc R20
014A L50:
014A .dbline 125
014A 4031 cpi R20,16
014C C0F3 brlo L47
014E .dbline -2
014E .dbline 131
014E ; {
014E ; send_data(k,data);
014E ; k++;
014E ; k++;
014E ; }
014E ; }
014E L46:
014E 0E940000 xcall pop_gset3
0152 .dbline 0 ; func end
0152 0895 ret
0154 .dbsym r i 20 c
0154 .dbsym r k 22 c
0154 .dbsym r data 10 c
0154 .dbend
0154 .dbfunc e key_scan _key_scan fc
0154 ; key_num -> R22
0154 ; key -> R20
.even
0154 _key_scan::
0154 0E940000 xcall push_gset3
0158 .dbline -1
0158 .dbline 134
0158 ;
0158 ; unsigned char key_scan(void)
0158 ; {
0158 .dbline 136
0158 ; unsigned char key,key_num;
0158 ; key_num=0;
0158 6627 clr R22
015A .dbline 137
015A ; DDRC=0x77;
015A 87E7 ldi R24,119
015C 84BB out 0x14,R24
015E .dbline 138
015E ; DDRB|=BIT(PB5);
015E BD9A sbi 0x17,5
0160 .dbline 139
0160 ; DDRD=0x97;
0160 87E9 ldi R24,151
0162 81BB out 0x11,R24
0164 .dbline 140
0164 ; PORTB&=~BIT(PB5);
0164 C598 cbi 0x18,5
0166 .dbline 141
0166 ; PORTC|=BIT(PC0);
0166 A89A sbi 0x15,0
0168 .dbline 142
0168 ; PORTC|=BIT(PC1);
0168 A99A sbi 0x15,1
016A .dbline 143
016A ; _NOP();
016A 0000 nop
016C .dbline 144
016C ; _NOP();
016C 0000 nop
016E .dbline 145
016E ; key=((PIND&0x68)>>3);
016E 40B3 in R20,0x10
0170 4876 andi R20,104
0172 4695 lsr R20
0174 4695 lsr R20
0176 4695 lsr R20
0178 .dbline 146
0178 ; if(key!=0x0D)
0178 4D30 cpi R20,13
017A 09F4 brne X3
017C 32C0 xjmp L52
017E X3:
017E .dbline 147
017E ; {
017E .dbline 148
017E ; delay_ms(40);
017E 08E2 ldi R16,40
0180 47DF xcall _delay_ms
0182 .dbline 149
0182 ; key=((PIND&0x68)>>3);
0182 40B3 in R20,0x10
0184 4876 andi R20,104
0186 4695 lsr R20
0188 4695 lsr R20
018A 4695 lsr R20
018C .dbline 150
018C ; if(key!=0x0D)
018C 4D30 cpi R20,13
018E 49F1 breq L54
0190 .dbline 151
0190 ; {
0190 .dbline 152
0190 ; switch(key)
0190 A42E mov R10,R20
0192 BB24 clr R11
0194 C501 movw R24,R10
0196 8530 cpi R24,5
0198 E0E0 ldi R30,0
019A 9E07 cpc R25,R30
019C 91F0 breq L61
019E 8530 cpi R24,5
01A0 E0E0 ldi R30,0
01A2 9E07 cpc R25,R30
01A4 7CF0 brlt L57
01A6 L62:
01A6 C501 movw R24,R10
01A8 8930 cpi R24,9
01AA E0E0 ldi R30,0
01AC 9E07 cpc R25,R30
01AE 39F0 breq L60
01B0 8C30 cpi R24,12
01B2 E0E0 ldi R30,0
01B4 9E07 cpc R25,R30
01B6 09F0 breq L59
01B8 05C0 xjmp L57
01BA X0:
01BA .dbline 153
01BA ; {
01BA L59:
01BA .dbline 154
01BA ; case 0x0C: key_num=1;break;
01BA 61E0 ldi R22,1
01BC .dbline 154
01BC 03C0 xjmp L57
01BE L60:
01BE .dbline 155
01BE ; case 0x09: key_num=2;break;
01BE 62E0 ldi R22,2
01C0 .dbline 155
01C0 01C0 xjmp L57
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -