📄 main.lis
字号:
00CA .dbend
00CA .dbfunc e LCD_write_data _LCD_write_data fV
00CA ; data -> R20
.even
00CA _LCD_write_data::
00CA 0E940000 xcall push_gset1
00CE 402F mov R20,R16
00D0 .dbline -1
00D0 .dbline 95
00D0 ; break;
00D0 ; }// 256分频,F=112HZ
00D0 ; case 3:
00D0 ; {
00D0 ; TCCR0=0x6b;
00D0 ; LCD_write_string(6,0," 450HZ");
00D0 ; break;
00D0 ; } // 64分频,F=450HZ
00D0 ; case 4:
00D0 ; {
00D0 ; TCCR0=0x6a;
00D0 ; LCD_write_string(6,0," 7200HZ");
00D0 ; break;
00D0 ; } // 8分频,F=7200HZ
00D0 ; case 5:
00D0 ; {
00D0 ; TCCR0=0x69;
00D0 .dbline 97
00D0 ; LCD_write_string(6,0,"28800HZ");
00D0 ; break;
00D0 00E1 ldi R16,16
00D2 10E0 ldi R17,0
00D4 97DF xcall _delay_nus
00D6 .dbline 98
00D6 ; } // 无分频,F=28800HZ
00D6 AE9A sbi 0x15,6
00D8 .dbline 99
00D8 ; default:break;
00D8 8BB3 in R24,0x1b
00DA 8F70 andi R24,15
00DC 8BBB out 0x1b,R24
00DE .dbline 100
00DE ; }
00DE 842F mov R24,R20
00E0 807F andi R24,240
00E2 2BB2 in R2,0x1b
00E4 282A or R2,R24
00E6 2BBA out 0x1b,R2
00E8 .dbline 101
00E8 ;
00E8 CADF xcall _LCD_en_write
00EA .dbline 102
00EA ;
00EA 842F mov R24,R20
00EC 8F70 andi R24,#0x0F
00EE 8295 swap R24
00F0 482F mov R20,R24
00F2 .dbline 103
00F2 ;
00F2 8BB3 in R24,0x1b
00F4 8F70 andi R24,15
00F6 8BBB out 0x1b,R24
00F8 .dbline 104
00F8 ; }
00F8 842F mov R24,R20
00FA 807F andi R24,240
00FC 2BB2 in R2,0x1b
00FE 282A or R2,R24
0100 2BBA out 0x1b,R2
0102 .dbline 105
0102 ;
0102 BDDF xcall _LCD_en_write
0104 .dbline -2
0104 L20:
0104 0E940000 xcall pop_gset1
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbsym r data 20 c
010A .dbend
010A .dbfunc e LCD_set_xy _LCD_set_xy fV
010A ; address -> R20
010A ; y -> R20
010A ; x -> R22
.even
010A _LCD_set_xy::
010A 0E940000 xcall push_gset2
010E 422F mov R20,R18
0110 602F mov R22,R16
0112 .dbline -1
0112 .dbline 124
0112 ; void R_set(void)
0112 ; {
0112 ; static unsigned char i;
0112 ; if(i!=9)i++;
0112 ; else i=1;
0112 ; switch(i)//频率选择
0112 ; {
0112 ; case 1:
0112 ; {
0112 ; OCR0=0x0a;//占空比10%
0112 ; LCD_write_string(13,0,"10%");
0112 ; break;
0112 ; }
0112 ; case 2:
0112 ; {
0112 ; OCR0=0x14;//占空比20%
0112 ; LCD_write_string(13,0,"20%");
0112 ; break;
0112 ; }
0112 .dbline 126
0112 ; case 3:
0112 ; {
0112 4423 tst R20
0114 19F4 brne L22
0116 .dbline 126
0116 462F mov R20,R22
0118 4058 subi R20,128 ; addi 128
011A 02C0 xjmp L23
011C L22:
011C .dbline 127
011C ; OCR0=0x1e;//占空比30%
011C 462F mov R20,R22
011E 4054 subi R20,64 ; addi 192
0120 L23:
0120 .dbline 128
0120 ; LCD_write_string(13,0,"30%");
0120 042F mov R16,R20
0122 B3DF xcall _LCD_write_command
0124 .dbline -2
0124 L21:
0124 0E940000 xcall pop_gset2
0128 .dbline 0 ; func end
0128 0895 ret
012A .dbsym r address 20 c
012A .dbsym r y 20 c
012A .dbsym r x 22 c
012A .dbend
012A .dbfunc e LCD_write_string _LCD_write_string fV
012A ; s -> R20,R21
012A ; Y -> R10
012A ; X -> R22
.even
012A _LCD_write_string::
012A 0E940000 xcall push_gset3
012E A22E mov R10,R18
0130 602F mov R22,R16
0132 4E81 ldd R20,y+6
0134 5F81 ldd R21,y+7
0136 .dbline -1
0136 .dbline 132
0136 ; break;
0136 ; }
0136 ; case 4:
0136 ; {
0136 .dbline 133
0136 ; OCR0=0x28;//占空比40%
0136 2A2D mov R18,R10
0138 062F mov R16,R22
013A E7DF xcall _LCD_set_xy
013C 05C0 xjmp L26
013E L25:
013E .dbline 135
013E .dbline 136
013E FA01 movw R30,R20
0140 0081 ldd R16,z+0
0142 C3DF xcall _LCD_write_data
0144 .dbline 137
0144 4F5F subi R20,255 ; offset = 1
0146 5F4F sbci R21,255
0148 .dbline 138
0148 L26:
0148 .dbline 134
0148 ; LCD_write_string(13,0,"40%");
0148 FA01 movw R30,R20
014A 2080 ldd R2,z+0
014C 2220 tst R2
014E B9F7 brne L25
0150 .dbline -2
0150 L24:
0150 0E940000 xcall pop_gset3
0154 .dbline 0 ; func end
0154 0895 ret
0156 .dbsym r s 20 pc
0156 .dbsym r Y 10 c
0156 .dbsym r X 22 c
0156 .dbend
0156 .dbfunc e LCD_write_char _LCD_write_char fV
0156 ; data -> y+4
0156 ; Y -> R22
0156 ; X -> R20
.even
0156 _LCD_write_char::
0156 0E940000 xcall push_gset2
015A 622F mov R22,R18
015C 402F mov R20,R16
015E .dbline -1
015E .dbline 143
015E ; break;
015E ; }
015E ; case 5:
015E ; {
015E ; OCR0=0x80;//占空比50%
015E ; LCD_write_string(13,0,"50%");
015E ; break;
015E ; }
015E ; case 6:
015E .dbline 144
015E ; {
015E 262F mov R18,R22
0160 042F mov R16,R20
0162 D3DF xcall _LCD_set_xy
0164 .dbline 145
0164 ; OCR0=0x3c;//占空比60%
0164 0C81 ldd R16,y+4
0166 B1DF xcall _LCD_write_data
0168 .dbline -2
0168 L28:
0168 0E940000 xcall pop_gset2
016C .dbline 0 ; func end
016C 0895 ret
016E .dbsym l data 4 c
016E .dbsym r Y 22 c
016E .dbsym r X 20 c
016E .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\avr\+++精华+++\+M16范例+\方波生成器2(PWM)/1602.h
0000 L30:
0000 .blkb 1
.area text(rom, con, rel)
016E .dbfile D:\avr\+++精华+++\+M16范例+\方波生成器2(PWM)/1602.h
016E .dbfile D:\avr\+++精华+++\+M16范例+\方波生成器2(PWM)\main.c
016E .dbfunc e get_key _get_key fc
016E .dbsym s j L30 c
016E ; i -> R20
.even
016E _get_key::
016E 0E940000 xcall push_gset1
0172 .dbline -1
0172 .dbline 23
0172 .dbline 26
0172 82B3 in R24,0x12
0174 8C60 ori R24,12
0176 82BB out 0x12,R24
0178 .dbline 27
0178 81B3 in R24,0x11
017A 837F andi R24,243
017C 81BB out 0x11,R24
017E .dbline 30
017E 8299 sbic 0x10,2
0180 02C0 rjmp L31
0182 .dbline 30
0182 41E4 ldi R20,65
0184 05C0 xjmp L32
0186 L31:
0186 .dbline 31
0186 8399 sbic 0x10,3
0188 02C0 rjmp L33
018A .dbline 31
018A 42E4 ldi R20,66
018C 01C0 xjmp L34
018E L33:
018E .dbline 32
018E 4427 clr R20
0190 L34:
0190 L32:
0190 .dbline 34
0190 4423 tst R20
0192 29F4 brne L35
0194 .dbline 35
0194 .dbline 36
0194 2224 clr R2
0196 20920000 sts L30,R2
019A .dbline 37
019A 0027 clr R16
019C 19C0 xjmp L29
019E L35:
019E .dbline 39
019E 20900000 lds R2,L30
01A2 2220 tst R2
01A4 A1F4 brne L37
01A6 .dbline 40
01A6 .dbline 40
01A6 40930000 sts L30,R20
01AA .dbline 41
01AA 0AE0 ldi R16,10
01AC 10E0 ldi R17,0
01AE 43DF xcall _delay_nms
01B0 .dbline 42
01B0 8299 sbic 0x10,2
01B2 02C0 rjmp L39
01B4 .dbline 42
01B4 41E4 ldi R20,65
01B6 05C0 xjmp L40
01B8 L39:
01B8 .dbline 43
01B8 8399 sbic 0x10,3
01BA 02C0 rjmp L41
01BC .dbline 43
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -