Hi Andrew,
Just a Wild Arse Guess on my part, but the config registers look much more complicated on that particular chip than the 16f84, which is simple. See 15.1 of the data sheet for more confusion.
JS
Hi Andrew,
Just a Wild Arse Guess on my part, but the config registers look much more complicated on that particular chip than the 16f84, which is simple. See 15.1 of the data sheet for more confusion.
JS
If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
.
Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
.
There simply is no "Happy Spam" If you do it you will disappear from this forum.
Here's the code:
TRISA = 0
TRISB = 2
CMCON = 7
ADCON1 = %00001111
ADCON0 = 0
symbol Off_1 = PortA.0
Symbol On_1 = PortA.1
symbol Off_2 = PortA.2
symbol On_2 = PortA.3
Symbol Speaker = PortA.4
SYMBOL Ground_1 = PortB.0
SYMBOL Positive_1 = PortB.1
symbol Lame_1 = PortB.2
symbol Ground_2 = PortB.3
Symbol Positive_2 = PortB.4
Symbol Lame_2 = PortB.5
SYMBOL Switch = PortA.5
symbol LED_1 = PortB.6
Symbol LED_2 = PortB.7
Positive_Ground_1 var bit
Ground_Lame_1 var bit
Positive_Lame_1 var bit
Positive_Bell_1 var bit
Positive_Ground_2 var bit
Ground_Lame_2 var bit
Positive_Lame_2 var bit
Positive_Bell_2 var bit
PG1_Count var byte
PG2_Count var byte
PL1_Count var byte
PL2_Count var byte
Cal var byte
Lockout var Word
Lockout_Cal var word
On1_Flag var bit
Off1_Flag var bit
On2_Flag var bit
Off2_Flag var bit
let cal = 18
let lockout_cal = 373
'''''''''''''
high on_1
pause 500
low on_1
high off_1
pause 500
low off_1
high off_2
pause 500
low off_2
high on_2
pause 500
low on_2
'''''''''''''''
input lame_1
INPUT LAME_2
Foil:
input positive_1
input positive_2
input ground_1
input ground_2
high positive_1
let positive_ground_1 = Ground_1
let positive_lame_1 = lame_2
let positive_bell_1 = ground_2
low positive_1
input positive_1
input positive_2
input ground_1
input ground_2
high positive_2
let positive_ground_2 = ground_2
let positive_lame_2 = lame_1
let positive_bell_2 = ground_1
low positive_2
input positive_2
high ground_1
let ground_lame_1 = lame_1
low ground_1
INPUT GROUND_1
high ground_2
let ground_lame_2 = lame_2
low ground_2
if positive_ground_1 = 0 and positive_bell_1 = 0 then
let pg1_count = pg1_count + 1
else
let pg1_count = 0
endif
if positive_ground_2 = 0 and positive_bell_2 = 0 then
let pg2_count = pg2_count + 1
else
let pg2_count = 0
endif
if positive_lame_1 = 1 AND POSITIVE_GROUND_1 = 0 then
let pl1_count = pl1_count + 1
else
let pl1_count = 0
endif
if positive_lame_2 = 1 AND POSITIVE_GROUND_2 = 0 then
let pl2_count = pl2_count + 1
else
let pl2_count = 0
endif
if pl1_count => cal then
high on_1
let on1_flag = 1
endif
if pl2_count => caL then
high on_2
let on2_flag = 1
endif
if pg1_count => cal AND PL1_COUNT < CAL then
high off_1
let off1_flag = 1
endif
if pg2_count => cal AND PL2_COUNT < CAL then
high off_2
let off2_flag = 1
endif
LET LED_1 = GROUND_LAME_1
LET LED_2 = GROUND_LAME_2
if On1_flag = 1 or off2_flag = 1 or on2_flag = 1 or off1_flag = 1 then
let lockout = lockout + 1
else
let lockout = 0
endif
if lockout => lockout_cal then
pause 2000
low on_1
low on_2
low off_1
low off_2
let on1_flag = 0
let on2_flag = 0
let off1_flag = 0
let off2_flag = 0
endif
goto foil
end
See the PBP manual, section 4.7...(may as well look at section 5.40 while you're at it)...
trisa=0:trisb=2:cmcon=7:adcon1=15:adcon0=0:Off_1 var PortA.0:On_1 var PortA.1:Off_2 var PortA.2:On_2 var PortA.3:Speaker var PortA.4:Ground_1 var PortB.0:Positive_1 var PortB.1:Lame_1 var PortB.2
Ground_2 var PortB.3:Positive_2 var PortB.4:Lame_2 var PortB.5:Switch var PortA.5:LED_1 var PortB.6:LED_2 var PortB.7:Positive_Ground_1 var bit:Ground_Lame_1 var bit:Positive_Lame_1 var bit
Positive_Bell_1 var bit:Positive_Ground_2 var bit:Ground_Lame_2 var bit:Positive_Lame_2 var bit:Positive_Bell_2 var bit:PG1_Count var byte:PG2_Count var byte:PL1_Count var byte:PL2_Count var byte
Cal var byte:Lockout var Word:Lockout_Cal var word:On1_Flag var bit:Off1_Flag var bit:On2_Flag var bit:Off2_Flag var bit:cal=18:lockout_cal=373:high on_1: pause 500:low on_1:high off_1: pause 500
low off_1:high off_2: pause 500:low off_2:high on_2: pause 500:low on_2:input lame_1:INPUT LAME_2
Foil:
input positive_1:input positive_2:input ground_1:input ground_2:high positive_1: positive_ground_1=Ground_1: positive_lame_1=lame_2: positive_bell_1=ground_2:low positive_1:input positive_1
input positive_2:input ground_1:input ground_2:high positive_2: positive_ground_2=ground_2: positive_lame_2=lame_1: positive_bell_2=ground_1:low positive_2:input positive_2:high ground_1
ground_lame_1=lame_1:low ground_1:iNPUT GROUND_1:high ground_2:ground_lame_2=lame_2:low ground_2
if positive_ground_1 = 0 and positive_bell_1 = 0 then
pg1_count = pg1_count + 1
else
pg1_count = 0
endif
if positive_ground_2 = 0 and positive_bell_2 = 0 then
pg2_count = pg2_count + 1
else
pg2_count = 0
endif
if positive_lame_1 = 1 AND POSITIVE_GROUND_1 = 0 then
pl1_count = pl1_count + 1
else
pl1_count = 0
endif
if positive_lame_2 = 1 AND POSITIVE_GROUND_2 = 0 then
pl2_count = pl2_count + 1
else
pl2_count = 0
endif
if pl1_count => cal then
high on_1 : on1_flag = 1
endif
if pl2_count => caL then
high on_2 : on2_flag = 1
endif
if pg1_count => cal AND PL1_COUNT < CAL then
high off_1 : off1_flag = 1
endif
if pg2_count => cal AND PL2_COUNT < CAL then
high off_2 : let off2_flag = 1
endif
LED_1 = GROUND_LAME_1 : LED_2 = GROUND_LAME_2
if On1_flag = 1 or off2_flag = 1 or on2_flag = 1 or off1_flag = 1 then
lockout = lockout + 1
else
lockout = 0
endif
if lockout => lockout_cal then
pause 2000 : low on_1 : low on_2 : low off_1 : low off_2 : on1_flag = 0 : on2_flag = 0 : off1_flag = 0 : off2_flag = 0
endif
goto foil
end
Last edited by skimask; - 6th July 2007 at 03:59.
Is anyone supposed to be able to actually read that?
Everyone's got a "Colon", and they all stink.
<br>
DT
<table><td></td><td>
</td><td>
</td></table>
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Ha, It's exactly the same. Except EVERYTHING'S different.
You've changed the SYMBOL's to VAR's, removed the LET's and changed a binary number to decimal. And while the program now looks completely different. After compiling, the HEX file will be byte for byte identical to the original code. No changes. No fixes.
Since it doesn't look anything like the original program, the "guy that wrote it" now has to spend probably several hours searching colon by colon, trying to find what it was that you changed. (took me an hour)you know it, I know it, the guy that wrote it knows it and should be able to read his own stuff....and you don't have to scroll thru 17 pages of stuff to get to the end...
And won't he be pissed after doing all that, only to find out that it doesn't make any difference. Because it's exactly the same program, just written with different words, and a really bad format.
There's no way to follow the flow of the program. You can't see any type of structure. It's just a bunch of lines of code. Very long lines at that. My guess is that you have a Wide screen monitor and make the code fit a maximized window, all the way across the screen. For anyone with a normal sized screen, they're now scrolling left and right, instead of up and down. And when viewing in a browser, it all wraps around and you can't find where one line ends and the next one begins.
And one last problem ... There's no room for comments.
Come back to that program in 6 months, and you're going to need some laxitives for those Colon's.
On a scale of 1-10, I'd give this formatting a 9 for the the best way to NOT write your program.
<br>
DT
And I come back to reading the manual once again...
The manual says 'Symbol can only be used to alias a variable, not to create it'. As far as the LET and SYMBOL, I referenced both of those at the beginning of the post... No changes, no fixes? I'm wondering...You've changed the SYMBOL's to VAR's, removed the LET's and changed a binary number to decimal. And while the program now looks completely different. After compiling, the HEX file will be byte for byte identical to the original code. No changes. No fixes.
Huh...I'm fairly handy with an 'Enter' key, and maybe a little bit of the 'Delete' key. Only took me about a couple of minutes or so to get one command per line. And again, the guy should be able to recognize what's where in the first place.Since it doesn't look anything like the original program, the "guy that wrote it" now has to spend probably several hours searching colon by colon, trying to find what it was that you changed. (took me an hour)
Maybe so, but maybe he'll learn a bit of something here and there and fix his own problem.And won't he be pissed after doing all that, only to find out that it doesn't make any difference.
Could be... I run 16 x 12, turned 90 degrees. And who's to say what's normal? What does your newspaper, comic book, any other book look like? I'll bet if you put a page from one of those across your screen, it would fit a lot better if the screen was rotated about 90 degree, left or right... If anything, I'd say the way 'normal' people use a monitor is 'abnormal' compared to the way people have been reading printed material for years.There's no way to follow the flow of the program. You can't see any type of structure. It's just a bunch of lines of code. Very long lines at that. My guess is that you have a Wide screen monitor and make the code fit a maximized window, all the way across the screen. For anyone with a normal sized screen, they're now scrolling left and right, instead of up and down.
True...but I won't be coming back to it.And one last problem ... There's no room for comments. Come back to that program in 6 months, and you're going to need some laxitives for those Colon's.
I think what you really mean is that you'd give this formatting a 9 for the best way NOT to write YOUR program.On a scale of 1-10, I'd give this formatting a 9 for the the best way to NOT write your program.
However, I'd give this formatting a 10 for the BEST way to write MY program.
Last edited by skimask; - 6th July 2007 at 16:02.
Just another jab with a pointy object ...
<table><tr><td align="center">From my "Little Green Book"<br>
<img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1840&stc=1&d=118385203 7"></td><td align="center">From the online PDF<br>
<img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1841&stc=1&d=118385204 5">
</td></tr></table>
P.S. Glad to hear it Alfred. <img src="http://www.picbasic.co.uk/forum/images/icons/icon14.gif">
<br><br>
DT
Well actually, that one was from a 2002 manual. (I think I'll throw that one away)
I have another one (2005) that has 5.40 as {LET}
But since you can't really know which version someone might have.
It might be a good idea to include the Title of the section along with the number.
Just a thought.
<br>
DT
Bookmarks