
Проста програма, симулирана с Proteus
4 команди, а 2 от тях не се изпълняват : (
ето кода на програмата :
;This program is about to test blinking diode
;Version:1.00 Date: 26.2.2011 MCU: PIC16F84A
;Made by: Nikolay Yanakiev
PROCESSOR 16F84A
#include "p16f84a.inc"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
; Declaring variables
Cblock 0x0C
WCYCLE
PRESCwait
endc
org 0x00
goto Main
org 0x04
goto Main
#include "bank.inc"
;BANK0 macro
;bcf STATUS,RP0 ;Select memory bank 0
;endm
;BANK1 macro
;bsf STATUS,RP0 ;Select memory bank 1
;endm
#include "WAIT.inc"
; ***** Declaring constants *****
;
; CONSTANT PRESCstd = .1 ;standard prescaler value for TMR0
;
;***** MACROS *****
;
;WAIT macro timeconst_1
; movlw timeconst_1
; call WAITstd
; endm
;
;WAITX macro timeconst_2, PRESCext
; movlw timeconst_2
; movwf WCYCLE ;set the delay time period
; movlw PRESCext ;write specific prescaler value
; call WAIT_x
; endm
;
;***** Subprograms *****
;
;WAITstd
; movwf WCYCLE ;set the delay time period
; movlw PRESCstd ;write specific prescaler value
;WAIT_x
; clrf TMR0
; BANK1 ;need to include bank.inc
; movwf OPTION_REG ;assign the prescaler to TMR0 timer
; BANK0 ;need to include bank.inc
;
;WAITa bcf INTCON,T0IF ;erase TMR0 overflow flag
;WAITb btfss INTCON,T0IF ;check whether it is erased, skip if it isn't
;
; goto WAITb ;Wait loop
; decfsz WCYCLE,1 ;repeat the loop if dellay period
; ;has not run out
; goto WAITa
; RETURN
Main
clrf WCYCLE
clrf PRESCwait
BANK1
movlw 0x00
movwf TRISB
clrf PORTB
Loop
movlw 0xff
movwf PORTB
WAIT .200
movlw 0x00
movwf PORTB
WAIT .200
goto Loop
End
резултатът, който получавам се вижда на прикачения файл - закъсненията не се получават. отчитам го от графиката на тока - тя е непрекъсната. моля, помогнете ми с идеи и предложения какво не съм направил както трябва. ако проблема е в програмата много ще се израдвам

, защото само чакам да ми дойде бредборда от Китай и започвам истинските тестове : ) (втори месец пътува обаче

І