Code:
DataWord VAR WORD
counter1 VAR WORD
DataTable CON EXT
'-----[The DATA table]--------------------------------------------------------
GOTO OverData ; Make sure data doesn't try to execute
ASM
DataTable
DW 0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11
DW 11,11,11,11,12,12,12,12,12,12,13,13,13,13,13,13,13,14,14,14,14,14,14,15,15,15,15,15,15,16,16,16,16,16,16,16,17,17,17,17,17,17,18,18,18,18,18,18,19,19,19,19,19
DW 19,20,20,20,20,20,20,21,21,21,21,21,21,22,22,22,22,22,22,23,23,23,23,23,23,24,24,24,24,24,24,25,25,25,25,25,25,26,26,26,26,26,27,27,27,27,27,27,28,28,28,28,28
DW 28,29,29,29,29,29,29,30,30,30,30,30,31,31,31,31,31,31,32,32,32,32,32,33,33,33,33,33,33,34,34,34,34,34,34,35,35,35,35,35,36,36,36,36,36,37,37,37,37,37,37,38,38
DW 38,38,38,39,39,39,39,39,40,40,40,40,40,40,41,41,41,41,41,42,42,42,42
DW 42,43,43,43,43,43,44,44,44,44,44,44,45,45,45,45,45,46,46,46,46,46,47,47,47,47,47,48,48,48,48,48,49,49,49,49,49,50,50,50,50,50,51,51,51,51
DW 51,52,52,52,52,53,53,53,53,53,54,54,54,54,54,55,55,55,55,55,56,56,56,56,56,57,57,57,57,58,58,58,58,58,59,59,59,59,59,60,60,60,60,61,61,61,61
DW 61,62,62,62,62,63,63,63,63,63,64,64,64,64,65,65,65,65,65,66,66,66,66,67,67,67,67,67,68,68,68,68,69,69,69,69,70,70,70,70,70,71,71,71,71,72,72
DW 72,72,73,73,73,73,74,74,74,74,74,75,75,75,75,76,76,76,76,77,77,77,77,78,78,78,78,79,79,79,79,80,80,80,80,81,81,81,81,82,82,82,82,83,83,83,83
DW 84,84,84,84,85,85,85,85,86,86,86,86,87,87,87,87,88,88,88,89,89,89,89,90,90,90,90,91,91,91,91,92,92,92,93,93,93,93,94,94,94,94,95,95,95,96,96
DW 96,96,97,97,97,97,98,98,98,99,99,99,99,100,100,100,101,101,101,101,102
DW 102,102,103,103,103,103,104,104,104,105,105,105,105,106,106,106,107,107,107,108,108,108,108,109,109,109,110,110,110,111,111,111,111,112,112
DW 112,113,113,113,114,114,114,115,115,115,116,116,116,116,117,117,117,118,118,118,119,119,119,120,120,120,121,121,121,122,122,122,123,123,123,124
DW 124,124,125,125,125,126,126,126,127,127,127,128,128,128,129,129,129,130,130,130,131,131,132,132,132,133,133,133,134,134,134,135,135,135,136,136
DW 137,137,137,138,138,138,139,139,139,140,140,141,141,141,142,142,142,143,143,144,144,144,145,145,146,146,146,147,147,147,148,148,149,149,149,150
DW 150,151,151,151,152,152,153,153,153,154,154,155,155,156,156,156,157,157,158,158,158,159,159,160,160,161,161,161,162,162,163,163,164,164,165,165
DW 165,166,166,167,167,168,168,169,169,169,170,170,171,171,172,172,173,173,174,174,175,175,175,176,176,177,177,178,178,179,179,180,180,181,181,182
DW 182,183,183,184,184,185,185,186,186,187,187,188,188,189,189,190,190,191,191,192,193,193,194,194,195,195,196,196,197,197,198,198,199,200,200,201, 201,202,202,203
DW 204,204,205,205,206,206,207,208,208,209,209,210,211,211,212,212,213,214,214,215,215,216,217,217,218,219,219,220,221,221,222,222,223,224,224,225,226,226,227,228
DW 228,229,230,230,231,232,233,233,234,235,235,236,237,238,238,239,240,240,241,242,243,243,244,245,246,246,247,248,249,250,250,251,252,253,253,254,255,256,257,258
DW 258,259,260,261,262,263,263,264,265,266,267,268,269,270,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295
DW 296,297,298,299,300,301,303,304,305,306,307,308,309,311,312,313,314,315,317,318,319,320,322,323,324,326,327,328,329,331,332,334,335,336,338,339,341,342,344,345
DW 347,348,350,351,353,354,356,358,359,361,362,364,366,368,369,371,373,375,377,378,380,382,384,386,388,390,392,394,396,398,401,403,405,407,410,412,414,417,419,422
DW 424,427,429,432,435,437,440,443,446,449,452,455,458,462,465,468,472,475,479,483,487,490,495,499,503,507,512,517,521,526,532,537,543,548,554,561,567,574,581,589
DW 597,605,614,624,634,645,657,670,684,699,717,736,759,786,819
DW 862,922,1023
endasm
Overdata: ' this is a jump point to make sure the above data table isn't executed
increment_loop:
if counter1 < 1023 then
COUNTER1 =COUNTER1+1
ReadCODE (DataTable + COUNTER1), DataWord
duty = dataword
gosub change_pwm
pause 1
GOTO increment_loop
endif
decrement_loop:
if counter1 > 0 then
COUNTER1 =COUNTER1-1
ReadCODE (DataTable + COUNTER1), DataWord
duty = dataword
gosub change_pwm
pause 1
GOTO decrement_loop
endif
GOTO increment_loop
change_pwm:
CCP1CON.4 = Duty.0 'Bit 0
CCP1CON.5 = Duty.1 'Bit 1
CCPR1L = Duty >> 2 'Bit 2-7
return
I've now get a smoothtastic fading up/down LED. (there did appear to be one gotcha...being of the lazy ilk, I wanted each DW line to be 256 values long - nope, max allowed seems to be about 65-70 bytes - I can't be exact but it is in or around that value ....so lots of DW lines needed)
Bookmarks