Jag har använt 16F84 och 12F509 i olika applikationer och det har hitintills fungerat bra. Nu behöver jag fler I/O och har köpt på mig ett antal 16F876. Efter 3 dagar med trail and error har jag inte åstadkommit mer än krökta pinnar när jag flyttar kretsen mellan programmeraren och lab-uppkopplingen. När jag inte använder någon "wait-cycle" så kan jag tända/släcka alla led utom RB6 RB3 och RC1 som lever sitt eget liv. Finns det någon vänlig själ som har lust att kolla vad jag gjort fel. Jag antar att det är en kollision någonstans eftersom samma program beter sig lika fel i flera olika 16F876.
Kod: Markera allt
list p=16f876
#include <p16f876.inc>
__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF
errorlevel -302
org 0x0000
bsf STATUS, RP0 ; select Bank1. (RP0 and RP1 are "0" by default)
movlw 0x31 ; W.REG = 00101111B 47
movwf ADCON1 ; set up all pins of PORTA as digital pins
movlw 0x00 ;
movwf TRISA ; RA05-RA0 OUTPUT
movlw 0x00 ;
movwf TRISB ; RB07-RA0 OUTPUT
movlw 0x00 ;
movwf TRISC ; RC07-RC0 OUTPUT
bcf STATUS, RP0 ; select Bank0
START BSF 05,0 ;RA0 tänds
call wait ;PRG kommer inte längre än hit
BSF 05,1
call wait
BSF 05,2
BSF 05,3
BCF 05,4
BSF 05,5
BSF 06,3
BSF 06,6
BSF 07,1
BSF 07,7
GOTO START
var5 EQU 0x20
var6 EQU 0x21
wait movlw 0xff
movwf var6
loop6 movlw 0xff
movwf var5
loop5 decfsz var5,1
goto loop5
decfsz var6,1
goto loop6
return
end
Error[115] C:\16F876_TEST.ASM 80 : Duplicate label ("VAR5" or redefining symbol that cannot be redefined)
Error[115] C:\16F876_TEST.ASM 81 : Duplicate label ("VAR6" or redefining symbol that cannot be redefined)
Error[113] C:\16F876_TEST.ASM 89 : Symbol not previously defined (var6)
Error[113] C:\16F876_TEST.ASM 91 : Symbol not previously defined (var5)
Error[113] C:\16F876_TEST.ASM 92 : Symbol not previously defined (var5)
Error[113] C:\16F876_TEST.ASM 94 : Symbol not previously defined (var6)
Edit: code-taggar tillagda - hcb