PIC16F84

C

CWT

Guest
Hi there ..
Dabar aš bandau su PIC16F84 veikti kaip eilės lygiagrečiai duomenų konverteris ..
Aš pridėti savo kodą čia ..
Yra problema paviršiaus, kai bandau savo kodą.
8LEDs (sudaro 8 bitai lygiagrečiai) negali įsižiebti pakeisti.Kartais gaus teisę produkcija, kartais įprotis.Didžiąją laiko dalį, ji yra neteisinga produkcija.

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Liūdnas" border="0" />
LIST p = 16F84
apima "P16F84.inc"

;------------------------------------------------- -----------------

CBLOCK 0x20; pradinė adresas General Register

BIT_COUNTER
NEXT_BIT
DELAY_COUNT
TEMP_STORE

ENDC

;------------------------------------------------- -----------------

BSF STATUSAS, RP0; inicijuoti RA0 kaip pirkimo
MOVLW 0x01
MOVWF TRISA
BCF STATUS, RP0
CLRF PORTA

BSF STATUSAS, RP0; initialise portB kaip produkcija
MOVLW 0x00
MOVWF TRISB
BCF STATUS, RP0
CLRF PORTB

GOTO START; Grįžti į pagrindinę programą

;------------------------------------------------- -----------------START_DELAY MOVLW 0x0C; subroutine atidėti 52us
MOVWF DELAY_COUNT
START_WAIT NOP
DECFSZ DELAY_COUNT 1
GOTO START_WAIT
RETURN

;------------------------------------------------- ------------------

BIT_DELAY MOVLW 0x18; subroutine atidėti 104us
MOVWF DELAY_COUNT
BIT_WAIT NOP
DECFSZ DELAY_COUNT 1
GOTO BIT_WAIT
RETURN

;------------------------------------------------- ------------------

START BTFSC PORTA, 0; aptikti pradžios bitas
GOTO START
KVIETIMAS START_DELAY, įsitikinkite, kad pradėti šiek tiek liko
BTFSC PORTA, 0
GOTO START

TITULINIS CLRF PORTB

KVIETIMAS BIT_DELAY
BTFSC PORTA, 0
BSF TEMP_STORE, 0

KVIETIMAS BIT_DELAY
BTFSC PORTA, 0
BSF TEMP_STORE, 1

KVIETIMAS BIT_DELAY
BTFSC PORTA, 0
BSF TEMP_STORE, 2

KVIETIMAS BIT_DELAY
BTFSC PORTA, 0
BSF TEMP_STORE, 3

KVIETIMAS BIT_DELAY
BTFSC PORTA, 0
BSF TEMP_STORE, 4

KVIETIMAS BIT_DELAY
BTFSC PORTA, 0
BSF TEMP_STORE, 5

KVIETIMAS BIT_DELAY
BTFSC PORTA, 0
BSF TEMP_STORE, 6

KVIETIMAS BIT_DELAY
BTFSC PORTA, 0
BSF TEMP_STORE, 7

KVIETIMAS BIT_DELAY
MOVF TEMP_STORE, 0
MOVWF PORTB

GOTO START

PABAIGA

 
Aš naudoju 9600 BPS ir 4MHz kristalų laikrodžių osciliatoriai.

 
CWT rašė:

Kartais gaus teisę produkcija, kartais įprotis.
Didžiąją laiko dalį, ji yra neteisinga produkcija.
<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Liūdnas" border="0" />
 
pakartotinai reiškia sinchronizuoti? turiu pakeisti delsos laiko?

 
Aš 51us ir 99us (išskyrus KVIETIMAS instrukcija) už 2 Delay rutiną dėl žaliavinės skaičius.Prašome patikrinti jį dar kartą.

 
Kokia jūsų indėlis grandinės RS232 atrodo?

MAX232 ar tranzistorius arba tiesioginis ryšys?

Kaip jūsų rankos saugikliai už 16C84?

nuoširdžiausi linkėjimai

 
Jūsų vėlavimą rutiną turėtų būti OK, tai tikrai ne nesvarbu, jei už vėlavimą 49 ar 51 (ar 102 vietoj 104) mus

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Šypsotis" border="0" />Bet aš patikrinti Temp_Store kaip jūs pamiršite, kad aišku, po to, kai gavote 8 databits ...

KVIETIMAS BIT_DELAY
MOVF TEMP_STORE, 0
MOVWF PORTB;<-- insert this here

CLRF TEMP_STORE;
<- įdėkite čia tai

GOTO STARTnuoširdžiausi linkėjimai

 

Welcome to EDABoard.com

Sponsor

Back
Top