проблема с PORTA PIC16f877
Добавлено: Сб янв 15, 2011 03:08:52
При написании программы для опроса матричной клавиатуры 3х3 возникло проблема с портом а точнее с регистром PORTA. Настраиваю 0-2 контакт на выходы и 3-5 на входы, даю 1 на один из трех столбцов и проверяю состояние 3-5 бита.
В качестве симулятора использовал Proteus7 Professional. С 3-6 битами проблем нет проблема с 3-5. При подачи на них 1 в регистре PORTA не наблюдалось никаких изменений но когда я переписываю состояние битов в другой регистр то в нем отображаются все биты на которые я подаю 1.
Так и должно быть или это протэус глючит.
сам код программы
processor pic16f877
#include<p16f877.inc>
errorlevel -302
AW equ 0x21
org 0x00
clrf STATUS
movlw 0x00
movwf PCLATH
goto Begin
Begin
bcf STATUS, RP1
bcf STATUS, RP0
movlw b'00000111'
movwf OPTION_REG
bsf STATUS,RP0
movlw 0x06
movwf ADCON1
movlw b'11111000'
movwf TRISA
bcf STATUS,RP0
clrf PORTA
bsf PORTA, 0x00
Start
movf PORTA,W
movwf AW
andlw b'00111000'
goto Start
END
В качестве симулятора использовал Proteus7 Professional. С 3-6 битами проблем нет проблема с 3-5. При подачи на них 1 в регистре PORTA не наблюдалось никаких изменений но когда я переписываю состояние битов в другой регистр то в нем отображаются все биты на которые я подаю 1.
Так и должно быть или это протэус глючит.
сам код программы
processor pic16f877
#include<p16f877.inc>
errorlevel -302
AW equ 0x21
org 0x00
clrf STATUS
movlw 0x00
movwf PCLATH
goto Begin
Begin
bcf STATUS, RP1
bcf STATUS, RP0
movlw b'00000111'
movwf OPTION_REG
bsf STATUS,RP0
movlw 0x06
movwf ADCON1
movlw b'11111000'
movwf TRISA
bcf STATUS,RP0
clrf PORTA
bsf PORTA, 0x00
Start
movf PORTA,W
movwf AW
andlw b'00111000'
goto Start
END