Свежие обсуждения
Микроконтроллеры

Не меняются биты регистра PORTA

1 2

Здравствуйте.Хотел написать программу для pic16f628 в mplab компилирую все нормально но когда запускаю отладку и смотрю регистр PORTA его значение не меняется хотя я туда бросаю значение 02H через W регистр.
Вот собственно текст программы.Товарищи спецы по PIC скажите пожалуйста что не так делаю

;*****Set up the Constants****

STATUS equ 03h ;Address of the STATUS register
TRISA equ 05h ;Address of the tristate register for port A
PORTA equ 06h ;Address of Port A
COUNT1 equ 20h ;First counter for our delay loops
COUNT2 equ 29h ;Second counter for our delay loops
CMCO equ 01fh
;****Set up the port****

bsf STATUS,5 ;Switch to Bank 1
movlw 00h ;Set the Port A pins
movwf TRISA ;to output.
bcf STATUS,5 ;Switch back to Bank 0

;****Turn the LED on****

Start MOVLW 0x07 ;Turn comparators off and
MOVWF CMCO
; movlw 01h ;Turn the LED on by first putting
; movwf PORTA ;it into the w register and then
bsf PORTA,2 ;on the port
movlw .10
movwf COUNT1
movlw .10
movwf COUNT2

;****Start of the delay loop 1****

Loop1 decfsz COUNT1,1 ;Subtract 1 from 255
goto Loop1 ;If COUNT is zero, carry on.
;This delay counts down from ;255 to zero, 255 times

;****Delay finished, now turn the LED off****

movlw 00h ;Turn the LED off by first putting
movwf PORTA ;it into the w register and then on ;the port

;****Add another delay****

Loop2 decfsz COUNT2,1 ;This second loop keeps the
goto Loop2 ;LED turned off long enough for

;****Now go back to the start of the program

goto Start ;go back to Start and turn LED ;on again

;****End of the program****

end ;Needed by some compilers, ;and also just in case we miss ;the goto instruction.

 

L.M Ericsson: TRISA equ 05h ;Address of the tristate register for port A
PORTA equ 06h ;Address of Port A

Тут не совсем понятно.

PORTA имеет адресс 05h
TRISA имеет адресс 85h (с учетом сдвига по банку - те-же 05h)
Поэтому Вы выставляете пожки порта А на выход и записываете информацию по адрессу 0x06, а это уже PORTB.

 

да я пробовал то самое с портом б .но то отладчик показывает то же самое

 

получилось после рестарта отладчика..по моему это был глюк симулятора

 

Столкнулся со странной ситуацией.эта программа написана мной и должен заставить светодиод подключенный к порту RB01 мигать.В симуляторе он нормально работает.Но когда я прошиваю МК и ставлю чип на плату светодиод почему то не мигает. А когда заливаю в МК PIC16F84A другую программу из самоучителя она работает нормально.

Вот моя программа

STATUS equ 03h ;Address of the STATUS register
TRISA equ 05h ;Address of the tristate register for port A
PORTA equ 05h ;Address of Port A
dash_counter equ 20h ;First counter for our delay loops
dot_counter equ 29h ;Second counter for our delay loops
delay_cntr equ 21h

bsf STATUS,5 ;Switch to Bank 1
movlw 00h ;Set the Port A pins
movwf TRISA ;to output.
bcf STATUS,5 ;Switch back to Bank 0

start call dash
call long_pause
call dot
call long_pause
call dash
call long_pause
call dot
call long_pause
call dash
call long_pause
call dash
call long_pause
call dash
call long_pause
call dot
call long_pause
call dash

;call long_pause
goto start

dash movlw 02h ;Turn the LED on by first putting it
movwf PORTA ;into the w register and then on the port
movlw .20
movwf dash_counter
Loop1
;Loop3
; decfsz delay_cntr,1
; goto Loop3
decfsz dash_counter,1 ;This second loop keeps the LED
goto Loop1
movlw 00h ;Turn the LED off
movwf PORTA
return

dot movlw 02h ;Turn the LED on by first putting it
movwf PORTA ;into the w register and then on the port
movlw .10
movwf dot_counter
Loop2
decfsz dot_counter,1 ;This second loop keeps the LED
goto Loop2
movlw 00h ;Turn the LED off
movwf PORTA
return

long_pause
movlw .10
movwf delay_cntr

Loop3 decfsz delay_cntr,1
goto Loop3
return

end

*******************************************************************
А вот программа из самоучителя вроде все одно и тоже но моя отказывается работать.

;*****Set up the Constants****

STATUS equ 03h ;Address of the STATUS register
TRISA equ 85h ;Address of the tristate register for port A
PORTA equ 05h ;Address of Port A
COUNT1 equ 08h ;First counter for our delay loops
COUNT2 equ 09h ;Second counter for our delay loops

;****Set up the port****

bsf STATUS,5 ;Switch to Bank 1
movlw 00h ;Set the Port A pins
movwf TRISA ;to output.
bcf STATUS,5 ;Switch back to Bank 0

;****Turn the LED on****

Start movlw 02h ;Turn the LED on by first putting it
movwf PORTA ;into the w register and then on the port

;****Add a delay

call Delay

;****Delay finished, now turn the LED off****

movlw 00h ;Turn the LED off by first putting it
movwf PORTA ;into the w register and then on the port

;****Add another delay****

call Delay

;****Now go back to the start of the program

goto Start ;go back to Start and turn LED on again

;****Here is our Subroutine

Delay

Loop1 decfsz COUNT1,1 ;This second loop keeps the LED
goto Loop1 ;turned off long enough for us to
decfsz COUNT2,1 ;see it turned off
goto Loop1 ;
return

;****End of the program****

end ;Needed by some compilers, and also
;just in case we miss the goto instruction.

 

b>L.M Ericsson: Столкнулся со странной ситуацией.эта программа написана мной и должен заставить светодиод подключенный к порту RB01 мигать.В симуляторе он нормально работает.Но когда я прошиваю МК и ставлю чип на плату светодиод почему то не мигает. А когда заливаю в МК PIC16F84A другую программу из самоучителя она работает нормально.

Пропиши вначале проги заголовок:
;*******************************************************************
;
List P=16F84A
#include <P16F84A.inc>
__config _CP_OFF & _MCLRE_ON & _INTRC_OSC_NOCLKOUT & _PWRTE_ON & _WDT_OFF
;
биты конфигурации в строке _config поставь нужные тебе. И проверь чтобы в папке компилятора был этот вложенный файл: P16F84A.inc

Что-то тэги <code> не работают... Строки заголовка сдвинь во второй столбец.

 

1. Программу не смотрел. А конфигурацию МК задаете правильно? Кварц?
...
опередили.

2. L.M Ericsson: RB01 мигать
а в коде:
L.M Ericsson: movwf PORTA

 

Сергей К: 2. L.M Ericsson: RB01 мигать
а в коде:
L.M Ericsson: movwf PORTA

Я решил что человек просто описАлся.

 

Сегодня подключил свой JDM programmer через USB-COM переходник...скорость программирования чудовишно маленькая. по сравнению с десктопом ...У вас такое тоже было?

 

Да вы правы.извините я хотел написать RА01