.module SinWave.c
.area lit
_sintab::
.byte 128,130
.byte 132,135
.byte 137,139
.byte 141,143
.byte 146,148
.byte 150,152
.byte 154,157
.byte 159,161
.byte 163,165
.byte 167,169
.byte 171,174
.byte 176,178
.byte 180,182
.byte 184,186
.byte 188,190
.byte 191,193
.byte 195,197
.byte 199,201
.byte 203,204
.byte 206,208
.byte 210,211
.byte 213,215
.byte 216,218
.byte 219,221
.byte 222,224
.byte 225,227
.byte 228,229
.byte 231,232
.byte 233,235
.byte 236,237
.byte 238,239
.byte 240,241
.byte 242,243
.byte 244,245
.byte 246,247
.byte 247,248
.byte 249,249
.byte 250,251
.byte 251,252
.byte 252,253
.byte 253,253
.byte 254,254
.byte 254,255
.byte 255,255
.byte 255,255
.byte 255,255
.byte 255,255
.byte 255,255
.byte 254,254
.byte 254,253
.byte 253,253
.byte 252,252
.byte 251,251
.byte 250,249
.byte 249,248
.byte 247,247
.byte 246,245
.byte 244,243
.byte 242,241
.byte 240,239
.byte 238,237
.byte 236,235
.byte 233,232
.byte 231,229
.byte 228,227
.byte 225,224
.byte 222,221
.byte 219,218
.byte 216,215
.byte 213,211
.byte 210,208
.byte 206,204
.byte 203,201
.byte 199,197
.byte 195,193
.byte 192,190
.byte 188,186
.byte 184,182
.byte 180,178
.byte 176,174
.byte 171,169
.byte 167,165
.byte 163,161
.byte 159,157
.byte 154,152
.byte 150,148
.byte 146,143
.byte 141,139
.byte 137,135
.byte 132,130
.byte 128,126
.byte 124,'y
.byte 'w,'u
.byte 's,'q
.byte 'n,'l
.byte 'j,'h
.byte 'f,'c
.byte 'a,95
.byte 93,91
.byte 'Y,'W
.byte 'U,'R
.byte 'P,'N
.byte 'L,'J
.byte 'H,'F
.byte 'D,'B
.byte 'A,63
.byte 61,59
.byte 57,55
.byte 53,52
.byte 50,48
.byte 46,45
.byte 43,41
.byte 40,38
.byte 37,35
.byte 34,32
.byte 31,29
.byte 28,27
.byte 25,24
.byte 23,21
.byte 20,19
.byte 18,17
.byte 16,15
.byte 14,13
.byte 12,11
.byte 10,9
.byte 9,8
.byte 7,7
.byte 6,5
.byte 5,4
.byte 4,3
.byte 3,3
.byte 2,2
.byte 2,1
.byte 1,1
.byte 1,1
.byte 1,1
.byte 1,1
.byte 1,1
.byte 2,2
.byte 2,3
.byte 3,3
.byte 4,4
.byte 5,5
.byte 6,7
.byte 7,8
.byte 9,9
.byte 10,11
.byte 12,13
.byte 14,15
.byte 16,17
.byte 18,19
.byte 20,21
.byte 23,24
.byte 25,27
.byte 28,29
.byte 31,32
.byte 34,35
.byte 37,38
.byte 40,41
.byte 43,45
.byte 46,48
.byte 50,52
.byte 53,55
.byte 57,59
.byte 61,63
.byte 64,'B
.byte 'D,'F
.byte 'H,'J
.byte 'L,'N
.byte 'P,'R
.byte 'U,'W
.byte 'Y,91
.byte 93,95
.byte 'a,'c
.byte 'f,'h
.byte 'j,'l
.byte 'n,'q
.byte 's,'u
.byte 'w,'y
.byte 124,126
.dbfile E:\grc\licc\例子10.4.4\SinWave.c
.dbsym s sintab _sintab Ac[360:360]
.area text
.dbfile E:\grc\licc\例子10.4.4\SinWave.c
.dbfunc s main _main fI
; i -> R16,R17
.even
_main::
.dbline 45{
; #include
; #define uchar unsigned char
; #define uint unsigned int
; const uchar sintab[ ] =
;
; {
; 128,130,132,135,137,139,141,143,146,148,
; 150,152,154,157,159,161,163,165,167,169,
; 171,174,176,178,180,182,184,186,188,190,
; 191,193,195,197,199,201,203,204,206,208,
; 210,211,213,215,216,218,219,221,222,224,
; 225,227,228,229,231,232,233,235,236,237,
; 238,239,240,241,242,243,244,245,246,247,
; 247,248,249,249,250,251,251,252,252,253,
; 253,253,254,254,254,255,255,255,255,255,
; 255,255,255,255,255,255,254,254,254,253,
; 253,253,252,252,251,251,250,249,249,248,
; 247,247,246,245,244,243,242,241,240,239,
; 238,237,236,235,233,232,231,229,228,227,
; 225,224,222,221,219,218,216,215,213,211,
; 210,208,206,204,203,201,199,197,195,193,
; 192,190,188,186,184,182,180,178,176,174,
; 171,169,167,165,163,161,159,157,154,152,
; 150,148,146,143,141,139,137,135,132,130,
; 128,126,124,121,119,117,115,113,110,108,
; 106,104,102, 99, 97, 95, 93, 91, 89, 87,
; 85, 82, 80, 78, 76, 74, 72, 70, 68, 66,
; 65, 63, 61, 59, 57, 55, 53, 52, 50, 48,
; 46, 45, 43, 41, 40, 38, 37, 35, 34, 32,
; 31, 29, 28, 27, 25, 24, 23, 21, 20, 19,
; 18, 17, 16, 15, 14, 13, 12, 11, 10, 9,
; 9, 8, 7, 7, 6, 5, 5, 4, 4, 3,
; 3, 3, 2, 2, 2, 1, 1, 1, 1, 1,
; 1, 1, 1, 1, 1, 1, 2, 2, 2, 3,
; 3, 3, 4, 4, 5, 5, 6, 7, 7, 8,
; 9, 9, 10, 11, 12, 13, 14, 15, 16, 17,
; 18, 19, 20, 21, 23, 24, 25, 27, 28, 29,
; 31, 32, 34, 35, 37, 38, 40, 41, 43, 45,
; 46, 48, 50, 52, 53, 55, 57, 59, 61, 63,
; 64, 66, 68, 70, 72, 74, 76, 78, 80, 82,
; 85, 87, 89, 91, 93, 95, 97, 99,102,104,
; 106,108,110,113,115,117,119,121,124,126,
; };
; void main(void)
; {
.dbline 47
; uint i;
; DDRA=0xff;
ldi R24,255
out 0x1a,R24
.dbline 48
; for (;;)
L2:
.dbline 49
; {
.dbline 50
; for (i=0;i clr R16
clr R17
rjmp L9
L6:
.dbline 51
ldi R24, ldi R25,>_sintab
mov R2,R16
mov R3,R17
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
lpm
out 0x1b,R0
L7:
.dbline 50
subi R16,255 ; offset = 1
sbci R17,255
L9:
.dbline 50
cpi R16,104
ldi R30,1
cpc R17,R30
brlo L6
.dbline 52
; PORTA=sintab[ i] ;
; }
.dbline 48
.dbline 48
rjmp L2
X0:
L1:
ret
.dbline 49}
.dbsym r i 16 i