제목 : Re : pic18f452 24c64과 함께

T

t2imoor

Guest
코드 :

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

;;;;;;;;;;;;;;;;;;;;;;;;; 개요 ;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;

; 파이널을 변경할 필요가 : 주석 LVDEN

; 리뷰 논평 부품

; RB0 : 방해에 다른 MCU를 생성

; EEPROM을 통한 의사 소통 프로그램의 I2C;;;;;;; 어셈블러 지시어 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;리스트 P = PIC18F452로, F = INHX32는 C = 160, N = 0, ST는 = 끄기, MM은 = 끄기, 연구 = 12, 엑스 = 켜기

# 포함 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; 리셋

__CONFIG _CONFIG2H, _WDT_OFF_2H; 워치독 타이머 장애

__CONFIG _CONFIG3H, _CCP2MX_ON_3H; RC1을 CCP2 (내걸 RB3보다)

__CONFIG _CONFIG4L, _LVP_OFF_4L; RB5 난을 활성화 / O를;;;;;;; VARIABLES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;CBLOCK 0X000; 교통의 RAM의 시작

온도

SENREG

HIREG

LOREG

RECREG

CONREG

ENDC;;;;;;; MACRO 정의 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;MACRO MOVLF DEST는, LITERAL

MOVLW LITERAL

DEST는 MOVWF

ENDM

MACRO SETWATCH

; 워치독 타이머 활성화

BSF WDTCON, SWDTEN

ENDM

MACRO CLRWATCH

BCF WDTCON, SWDTEN

ENDM

; 보내 비아의 I2C

I2CSEND MACRO Data1, ADDRESSH, ADDRESSL

외침 GENSTART; 시작 조건 생성

MOVLF CONREG, H'A0 '

외침 CALLEEPROM하며 EEPROM이 소

MOVLF HIREG, ADDRESSH; 주소 하이 바이트

MOVLF LOREG, ADDRESSL; 하한가 ADD가

외침 SENDADDR

MOVLF 온도, Data1, 데이터

외침 SendData

외침 GENSTOP

ENDM;;;;;;; 벡터 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;ORG를이 0x0000; 리셋 벡터



GOTO 스타트ORG를 0x0008; 높은 우선순위 인터럽트 벡터

CLRWDT

CLRWATCH

GOTO HPINTORG를 0X0018; 낮은 우선 순위 인터럽트 벡터

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

;;;;;;; 메인 코드 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;

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

; 초기화

ORG를 H'30 '

스타트 CLRF TRISB

CLRF PORTB

CLRF TRISD

CLRF TMR1L

CLRF TMR1H

BSF TRISA, 0; 아날로그 입력 채널

; 인터럽트

MOVLF INTCON, B'11000000 '

; TIMER1 설정 - TIMER1 원인은 A / D 업데이트

BSF PIE1, TMR1IE; TIMER1 인터럽트 활성화

BSF IPR1, TMR1IP

; BSF T1CON, TMR1ON

; ADC를 설정

MOVLF ADCON0, B'00000000 '

MOVLF ADCON1, B'01000001 '

CLRF ADRESH

CLRF ADRESL

BSF ADCON0, ADON

;의 I2C 설정의 I2C 모드, SCL과 SDA는 - 라인이있다

; 조작에 의해 MSSP 하드웨어하지만 아직 ...
: (

MOVLF SSPSTAT, B'10000000 '; 슬루율 제어 사용 중지

MOVLF SSPCON1, B'00101000 '; 마스터 모드, SSP를 활성화

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

MOVLF SSPADD, H'13 '; 50kHz 보오드 레이트

; TIMER0 초기화

MOVLF T0CON, B'11000101 '; 저전압 DETECT 모듈 (LVD) 구성

MOVLF LVDCON, B'00001101 '; 4.2 - 4.45 브이는 TRIGGER 수준이다

BCF PIE2, LVDIE

; BSF LVDCON, LVDEN

LVDENPOLL BTFSS LVDCON, 5

; GOTO LVDENPOLL

BCF PIR2, LVDIF

BSF IPR2, LVDIP

BSF PIE2, LVDIE; 단계 데이터 시트은 다음과

; ALL을 참조 당신은 내 대답을하지 않습니다

; 데이터 시트를 ...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;; 실제 코드는 여기 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BEGINS ;;;;;;;;

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

CLRWDT

; SETWATCH

루프; 푹

; CLRWDT

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

외침 기다

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

외침 기다

외침 기다

외침 GETI2C

MOVWF PORTDGOTO $

;;;;;;;;;;; 서브루틴 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;

;의 I2C 서브루틴

SENI2C 외침 GENSTART

MOVLF CONREG, H'A0 '

외침 CALLEEPROM

외침 SENDADDR

외침 SendData

외침 GENSTOP

전화를 기다

반환

WAITFORACK BTFSC SSPCON2, ACKSTAT

GOTO WAITFORACK

BSF SSPCON2, ACKSTAT

반환

GETI2C 외침 GENSTART

MOVLF CONREG, H'A0 '

외침 CALLEEPROM

외침 SENDADDR

외침 GENSTOP

외침 기다

외침 기다

외침 GENSTART

MOVLF CONREG, H'A1 '

외침 CALLEEPROM

BSF SSPCON2, RCEN

전화 POLLBUFF

; BFCHK BTFSS SSPSTAT, BF

; GOTO BFCHK

BSF SSPCON2, ACKDT;는 ACK = 1

BSF SSPCON2, ACKEN;는 ACK 보내기

; BCF PIR1, SSPIF

; 외침 POLLBUFF

외침 GENSTOP

MOVF SSPBUF, 승

반환

; 생성 시작 조건

GENSTART BCF PIR1, SSPIF; SSPIF CLEAR를

BSF SSPCON2, ACKSTAT

BSF SSPCON2, 센; 시작 조건 생성

외침 POLLBUFF; 시작 조건 완전히 생성

반환

; EEPROM이 소

CALLEEPROM BCF PIR1, SSPIF; A0 A1과 A2 그러고있을거야

MOVFF CONREG, SSPBUF

외침 WAITFORACK

외침 POLLBUFF

BSF SSPCON2, ACKSTAT; 그는 ACK 가정할 경우가 발생했습니다

반환

; 위치 주소 'HIREG'및 'LOREG'들이대고

SENDADDR BCF PIR1, SSPIF

MOVFF HIREG, SSPBUF

외침 WAITFORACK

BSF SSPCON2, ACKSTAT

외침 POLLBUFF

BSF SSPCON2, ACKSTAT; 그는 ACK 가정할 경우가 발생했습니다

MOVFF LOREG, SSPBUF

외침 WAITFORACK

외침 POLLBUFF

BSF SSPCON2, ACKSTAT

반환

;은 데이터의 '온도'의 위치를 들이대고 'HIREG'및 'LOREG'쓴다

SendData BCF PIR1, SSPIF

MOVFF 온도, SSPBUF

외침 WAITFORACK

외침 POLLBUFF

BSF SSPCON2, ACKSTAT

반환

;는 멈춰 조건 생성

GENSTOP BCF PIR1, SSPIF

BSF SSPCON2 펜

외침 POLLBUFF

반환; 20 마이크로 초 지연 : 필수 ADC를위한

DEL20U MOVLF 온도, 다봉 20 '

온도 LOOP_ADCACQ DECF

BNZ LOOP_ADCACQ

BCF 상태, 지

반환

; POLL SSPIF

POLLBUFF BTFSS PIR1, SSPIF

GOTO POLLBUFF

BCF PIR1, SSPIF

반환GETADC 외침 DEL20U

BSF ADCON0, 바로 GO

LOOPGETADC BTFSC ADCON0, 바로 GO

GOTO LOOPGETADC

MOVF ADRESH, 0

반환; (소요 시간 내부로 작성하지) 10ms TWR 기다

기다려 놉

MOVLW 다봉 156 '; 가치 스타팅의 SET

MOVWF TMR0L; 및 부하에 타이머

BCF INTCON, T0IF; 리셋 타이머 출력 FLAG

WEM BTFSS INTCON, T0IF; 10ms 기다

GOTO WEM; 대한되면 TIMEOUT

반환; 바이트 적고 끝내고 ....;;;;;;;;;; 인터럽트 서비스 루틴 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;

; 높은 우선순위 인터럽트 POLL

HPINT BTFSC PIR2, LVDIF

GOTO LVDINT

BTFSC PIR1, TMR1IF

GOTO TMR1INT

SETWATCH

RETFIE
TMR1INT

BCF PIR1, TMR1IF

외침 GETADC

; ROM과에 저장

MOVWF 온도

INCF LOREG

외침 SENI2C

외침 기다

GOTO HPINTLVDINT

BTG PORTB, 0

BTG PORTB, 0

GOTO HPINT

최종
 
컴퓨터와 함께 C64 어떻게 사용합니까?weer conxsion입니다

 

Welcome to EDABoard.com

Sponsor

Back
Top