Re: PIC18F452 с 24C64

T

t2imoor

Guest
Код:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;; ОБЗОР ;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;

, Заключительный требуемых изменений: Разкомментируйте LVDEN

: Обзор КОММЕНТИРОВАННЫЕ ЧАСТЕЙ

; RB0: генерирует прерывание ДРУГОЙ MCU

, Программа связывается с VIA EEPROM I2C;;;;;;; Директивы ассемблера ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;LIST P = PIC18F452, F = INHX32, С = 160, N = 0, ST = OFF, MM = OFF, R = DEC, X = ON

# INCLUDE P18F452.INC

; __CONFIG _CONFIG1H, _HS_OSC_1H; HS OSCILLATOR

__CONFIG _CONFIG1H, _XT_OSC_1H

__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L & _BORV_42_2L; RESET

__CONFIG _CONFIG2H, _WDT_OFF_2H; Сторожевой таймер ИНВАЛИДОВ

__CONFIG _CONFIG3H, _CCP2MX_ON_3H; CCP2 К RC1 (а не на RB3)

__CONFIG _CONFIG4L, _LVP_OFF_4L; RB5 включена для ввода / вывода;;;;;;; ПЕРЕМЕННЫЕ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;CBLOCK 0x000, начало ДОСТУПА ОЗУ

TEMP

SENREG

HIREG

LOREG

RECREG

CONREG

ENDC;;;;;;; Макроопределений ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;MOVLF MACRO DEST, буквальный

MOVLW БУКВАЛЬНОЙ

MOVWF DEST

ENDM

SETWATCH MACRO

; Сторожевой таймер ENABLE

BSF WDTCON, SWDTEN

ENDM

CLRWATCH MACRO

КБК WDTCON, SWDTEN

ENDM

; Отправить по I2C

I2CSEND MACRO data1, ADDRESSH, ADDRESSL

CALL GENSTART; GENERATE СНВ СОСТОЯНИЕ

MOVLF CONREG, H'A0 '

CALL CALLEEPROM, Адрес EEPROM

MOVLF HIREG, ADDRESSH; старший байт адреса

MOVLF LOREG, ADDRESSL, добавить LOW

CALL SENDADDR

MOVLF TEMP, DATA1; ДАННЫХ

CALL SendData

CALL GENSTOP

ENDM;;;;;;; ВЕКТОРЫ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;ORG 0x0000; RESET VECTOR

NOP

GOTO СНВORG 0x0008; Приоритетные вектор прерывания

CLRWDT

CLRWATCH

GOTO HPINTORG 0X0018; низкий приоритет вектор прерывания

GOTO $; TRAP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;; Основной код ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; ИНИЦИАЛИЗАЦИИ

ORG H'30 '

НАЧАЛО CLRF TRISB

CLRF PORTB

CLRF TRISD

CLRF TMR1L

CLRF TMR1H

BSF TRISA, 0; аналоговый вход CHANNEL

; Прерываний

MOVLF INTCON, B'11000000 '

; Timer1 SETTINGS - timer1 ПРИЧИНЫ / D UPDATE

BSF PIE1, TMR1IE; ENABLE timer1 ПРЕРВАТЬ

BSF IPR1, TMR1IP

; ЧФ T1CON, TMR1ON

; ADC НАСТРОЙКИ

MOVLF ADCON0, B'00000000 '

MOVLF ADCON1, B'01000001 '

CLRF ADRESH

CLRF ADRESL

BSF ADCON0, ADON

; I2C SETTINGS - В I2C MODE, SCL и СДА линий

; Манипулируют MSSP аппаратуры, но все же ...
: (

MOVLF SSPSTAT, B'10000000 '; Slew Rate Control ИНВАЛИДОВ

MOVLF SSPCON1, B'00101000 '; MASTER MODE, SSP ENABLED

MOVLF SSPCON2, B'01100000 '; ACKSTAT, ACKDT SET

MOVLF SSPADD, H'13 '; 50 КГц BAUD ТАРИФ

; Timer0 ИНИЦИАЛИЗАЦИИ

MOVLF T0CON, B'11000101 '; НИЗКОВОЛЬТНЫЕ DETECT МОДУЛЬ (LVD) конфигурации

MOVLF LVDCON, B'00001101 '; 4,2 - 4,45 V IS уровня переключения

КБК PIE2, LVDIE

; ЧФ LVDCON, LVDEN

LVDENPOLL BTFSS LVDCON, 5

; GOTO LVDENPOLL

КБК PIR2, LVDIF

BSF IPR2, LVDIP

BSF PIE2, LVDIE; ШАГИ ПРИДЕРЖИВАТЬСЯ AS данных ЛИСТ

, Все мои ответы он направит вас

; В технических спецификациях ...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;; Фактический код НАЧИНАЕТСЯ ЗДЕСЬ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CLRWDT

; SETWATCH

LOOP; СНА

; CLRWDT

I2CSEND H'AB ', H'01', H'00 '

Ожидание

I2CSEND H'15 ', H'00', H'00 '

Ожидание

Ожидание

CALL GETI2C

MOVWF PORTDGOTO $

;;;;;;;;;;; Подпрограмм ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;

; I2C подпрограмм

SENI2C CALL GENSTART

MOVLF CONREG, H'A0 '

CALL CALLEEPROM

CALL SENDADDR

CALL SendData

CALL GENSTOP

ожидание вызова

ВОЗВРАЩЕНИЕ

WAITFORACK BTFSC SSPCON2, ACKSTAT

GOTO WAITFORACK

BSF SSPCON2, ACKSTAT

ВОЗВРАЩЕНИЕ

GETI2C CALL GENSTART

MOVLF CONREG, H'A0 '

CALL CALLEEPROM

CALL SENDADDR

CALL GENSTOP

Ожидание

Ожидание

CALL GENSTART

MOVLF CONREG, H'A1 '

CALL CALLEEPROM

BSF SSPCON2, RCEN

вызова POLLBUFF

; BFCHK BTFSS SSPSTAT, Б. Ф.

; GOTO BFCHK

BSF SSPCON2, ACKDT; АСК = 1

BSF SSPCON2, ACKEN, отправьте ACK

; КБК PIR1, SSPIF

; Призыва POLLBUFF

CALL GENSTOP

MOVF SSPBUF, W

ВОЗВРАЩЕНИЕ

; GENERATE СНВ СОСТОЯНИЕ

GENSTART КБК PIR1, SSPIF; CLEAR SSPIF

BSF SSPCON2, ACKSTAT

BSF SSPCON2, SEN; GENERATE СНВ СОСТОЯНИЕ

CALL POLLBUFF; СНВ СОСТОЯНИЕ полностью сформирован

ВОЗВРАЩЕНИЕ

Адресная EEPROM

CALLEEPROM КБК PIR1, SSPIF; A0 A1 и A2 основаны

MOVFF CONREG, SSPBUF

CALL WAITFORACK

CALL POLLBUFF

BSF SSPCON2, ACKSTAT; предполагая, что произошло ACK

ВОЗВРАЩЕНИЕ

; АДРЕСА МЕСТО указывает 'HIREG' LOREG и '

SENDADDR КБК PIR1, SSPIF

MOVFF HIREG, SSPBUF

CALL WAITFORACK

BSF SSPCON2, ACKSTAT

CALL POLLBUFF

BSF SSPCON2, ACKSTAT; предполагая, что произошло ACK

MOVFF LOREG, SSPBUF

CALL WAITFORACK

CALL POLLBUFF

BSF SSPCON2, ACKSTAT

ВОЗВРАЩЕНИЕ

; Записывает данные в 'TEMP' ТО МЕСТО которую указывает 'HIREG' LOREG и '

SendData КБК PIR1, SSPIF

MOVFF TEMP, SSPBUF

CALL WAITFORACK

CALL POLLBUFF

BSF SSPCON2, ACKSTAT

ВОЗВРАЩЕНИЕ

; Генерировать выключенное положение

GENSTOP КБК PIR1, SSPIF

BSF SSPCON2, ПЕН

CALL POLLBUFF

ВОЗВРАЩЕНИЕ; 20 микросекунд DELAY: НЕОБХОДИМЫЕ ДЛЯ АЦП

DEL20U MOVLF TEMP, D'20 '

LOOP_ADCACQ DECF TEMP

BNZ LOOP_ADCACQ

BCF STATUS, Z

ВОЗВРАЩЕНИЕ

; ГОЛОСОВАНИЕ SSPIF

POLLBUFF BTFSS PIR1, SSPIF

GOTO POLLBUFF

КБК PIR1, SSPIF

ВОЗВРАЩЕНИЕGETADC CALL DEL20U

BSF ADCON0, ГО

LOOPGETADC BTFSC ADCON0, ГО

GOTO LOOPGETADC

MOVF ADRESH, 0

ВОЗВРАЩЕНИЕ, Ждут 10МС TWR (ВРЕМЯ требуется написать самостоятельно)

WAIT NOP

MOVLW D'156 '; SET Начальное значение

MOVWF TMR0L; И нагрузки в TIMER

КБК INTCON, T0IF; таймер сброса OUT ФЛАГ

ОРЭ BTFSS INTCON, T0IF, ждут 10МС

GOTO ОРЭ; ДЛЯ TIMEOUT

RETURN; BYTE WRITE СОВЕРШЕНО ....;;;;;;;;;; Подпрограммы обслуживания прерываний ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;

Высокая приоритетных прерываний ГОЛОСОВАНИЕ

HPINT BTFSC PIR2, LVDIF

GOTO LVDINT

BTFSC PIR1, TMR1IF

GOTO TMR1INT

SETWATCH

RETFIE
TMR1INT

КБК PIR1, TMR1IF

CALL GETADC

, Сохранять К ROM

MOVWF TEMP

INCF LOREG

CALL SENI2C

Ожидание

GOTO HPINTLVDINT

BTG PORTB, 0

BTG PORTB, 0

GOTO HPINT

КОНЕЦ
 
Как вы используете C64 с компьютером?Вера является conxsion

 

Welcome to EDABoard.com

Sponsor

Back
Top