Chek koodi kokoonpanijalle

G

gimmy

Guest
Valitettavasti kaveri mutta kaipasin itseäni,
en tiedä miksi koodi ei toimi, voi joku auttaa minua e Chek it, please?
otsikko "PIC16F73"
luettelo p = 16f73, f = inhx32
#
include <p16f73.inc>MSGPTR EQU 0x26; Yleiskäyttöiset rekisteri
BITS EQU 0x27; Yleiskäyttöiset rekisteri
CNTMSEC EQU 0x28; Yleiskäyttöiset rekisteri
ZEROBIT EQU 0x02; Zero vähän Status Rekisterinumero
DELAY1_VAL1 EQU 0x21
DELAY1_VAL1_TEMP EQU 0x22
DELAY2_VAL1 EQU 0x23
DELAY2_VAL1_TEMP EQU 0x24
TMR0_TEMP EQU 0x25; Käytetyt varastointitilojen TMR0 aikana keskeyttää
W_TEMP EQU 0x29; Käytetyt varastointitilojen W aikana keskeyttää
SPBRG_VAL EQU 0x30, asettaa baudinopeus 9600 varten 4Mhz kellon
PAUSE_DELAY EQU 0x31
CBLOCK 0x020
Liput; byte tallentaa indikaattori flags
ENDC

Org 0x00; palauttaa vektorin
Goto Käynnistä
Org 0x08; alkuperätilalla ulkoisen RA0/INTDELAY1 MOVLW 0xB2;
No

ulkorenkaiden silmukoita on 0xFF-val
MOVWF DELAY1_VAL1;
LOOP2 MOVLW 0x01;
No

Sisäastian silmukoita on 0xFF-val
MOVWF TMR0
BANKSEL OPTION_REG;
MOVLW B'11000111 ", asettaa prescaler 256
MOVWF OPTION_REG;
BANKSEL PORTA
LOOP1
MOVF TMR0, 0; vaikuttaa Z hieman Tila
BTFSS ASEMA, ZEROBIT; Katso jos Z bit on asetettu
Goto LOOP1; Ei, tarkistaa uudelleen
INCF DELAY1_VAL1, 1; kyllä, inc DELAY1_VAL1 Vaikuttaako Z bittinen
BTFSS ASEMA, ZEROBIT; käytetään onko DELAY1_VAL1 on nolla
Goto LOOP2; NO - aloittaa sisempi silmukka uudelleen
RETLW 0; KYLLÄ - tuotto DELAY1

DELAY2 MOVLW 0xFE;
No

ulkorenkaiden silmukoita on 0xFF-val
MOVWF DELAY2_VAL1;
LOOP4 MOVLW 0x01;
No

Sisäastian silmukoita on 0xFF-val
MOVWF TMR0
MOVLW B'11000111 ", asettaa prescaler 256
BANKSEL OPTION_REG;
MOVWF OPTION_REG;
BANKSEL PORTA
LOOP3
MOVF TMR0, 0; vaikuttaa Z hieman Tila
BTFSS ASEMA, ZEROBIT; Katso jos Z bit on asetettu
Goto LOOP3; Ei, tarkistaa uudelleen
INCF DELAY2_VAL1, 1; kyllä, inc DELAY1_VAL1 Vaikuttaako Z bittinen
BTFSS ASEMA, ZEROBIT; käytetään onko DELAY1_VAL1 on nolla
Goto LOOP4; NO - aloittaa sisempi silmukka uudelleen
RETLW 0; KYLLÄ - tuotto DELAY1Alku
; Interrupt Alustaminen
MOVLW B'00000000 "; Asettaa GIE ja PORTB int.
MOVWF INTCON; mahdollistaa keskeyttää olisi sovellettava PORTB <7:4>

; SATAMAAN Alustaminen
BANKSEL PORTA; valitse pankin PORTA
CLRF PORTA;
CLRF PORTB; Port configuration
BANKSEL TRISA
MOVLW 0xFF; Configure Port A
MOVWF TRISA; panoksina
MOVLW B'00000000 "Configure Port B
MOVWF TRISB; Tuotokset = 0,1,2,3,4,5,6,7
MOVLW B'00000000 "
MOVWF TRISC; Configure PORTC tuotokseksi
BANKSEL PORTA; Valitse pankin PORTA
MOVLW B'00000000 "Kaikki PORTC
n output = 0
MOVWF PORTC;

; TX UART initialilsation
BANKSEL TRISA, valitse pankki 1
MOVLW 0xC0, asettaa tris bittiä varten TX ja RX
MOVLW SPBRG_VAL, asettaa baudinopeus
MOVWF SPBRG
MOVLW 0x24; mahdollistaa lähetyksen ja korkean baudinopeus
MOVWF TXSTA
BANKSEL PORTA; valitse pankki 0
MOVLW 0x90; mahdollistaa sarjaportti ja vastaanotto
MOVWF RCSTA

; Aseta osoite
OUTMSG MOVWF MSGPTR; panna 'W' osaksi viesti pointer
MSGLOOP MOVF MSGPTR, W; saattaa tasoittaa 'W'
CALL MSGTXT; palauttaa ASCII-merkki "W"
MOVWF PORTC;
ADDLW 0; asetetaan nolla lippu jos W = 0
BTFSC STATUS, 2; ohittaa jos nolla bittinen ei asetettu
RETURN; päättynyt jos W = 0
CALL OUTCH; tuotos merkkirajoitusta
INCF MSGPTR, f, kohta ensi
Goto MSGLOOP; enemmän merkkejä
MSGTXT
ADDWF PCL, f; offset lisätään PCL
RETLW d'1 '; 1
RETLW d'84 '; 84
RETLW 0x63, "c"
RETLW 0x6F, "o"
RETLW 0x6E; 'n'
RETLW 0x20, "tilaa"
RETLW 0x30;'0 '
RETLW 0x30;'0 '
RETLW 0x3A; ":"
RETLW 0x30;'0 '
RETLW 0x43, "C"
RETLW 0x3A; ":"
RETLW 0x38,
8 "
RETLW 0x34;'4 '
RETLW 0x3A; ":"
RETLW 0x30;'0 '
RETLW 0x30;'0 '
RETLW 0x3A; ":"
RETLW 0x30;'0 '
RETLW 0x45, "E"
RETLW 0x3A; ":"
RETLW 0x44, "D"
RETLW 0x34;'4 '
RETLW 0x00 ja päättyy seding rutiinia (toimii pysäkki bittiä)

OUTCH MOVWF TXREG; esittää W osaksi toimitettava rekisteri
MOVLW 8, kahdeksan databittiä
MOVWF BITS; count bittiä
; BSF PORTA, 1; aloittaa bitin RA1 CHEK ////////////////////////
TXLOOP MOVLW 0x31; 49 desimaaliin viiveaika
CALL MICRO4
ja odota 49 x 4 = 196 mikrosekunnin
RRF TXREG, f; kiertää oikeus kaikkein bittinen otetaan kantaa
BTFSC STATUS, 0; jos kuljettaa 0 haluat asettaa bittinen (matala)
Goto CLRBIT; muuta selvää bittinen, (korkea)
; BSF PORTA, 1; 5 V on nastainen 1 (RA1) CHEK //////////////////
Goto TESTDONE ja päättyy merkin?
CLRBIT; BCF PORTA, 1; 0V on nastainen 1 (RA1) CHEK /////////////////
NOP, tehdä molemmat vaihtoehdot 12 micosec (ylp-"NOP")
TESTDONE DECFSZ BITS, f; 1 vähemmän tietoja bittinen, ohita kun nolla
Goto TXLOOP; enemmän bittejä vasemmalle, viive tämä
MOVLW 0x34; täyden 208 microsec tällä kertaa
CALL MICRO4; viive viime tietojen bittinen
; BCF PORTA, 1; 0V, (korkea) varten pysäkki bittiä CHEK /////////////////
MOVLW 0x68; desimaali 104 viive 2 stop bits
CALL MICRO4
RETURN
NMSEC MOVWF CNTMSEC; W ms count rekisteri
MSECLOOP MOVLW 0xF8; 8 microsec yleiskustannukset
CALL MICRO4; 248 * 4 2 = 994 tästä
NOP; täydellinen viivästys (ylp-"NOP")
NOP;
DECFSZ CNTMSEC, f; vähenemä laskea, ohita kun nolla
Goto MSECLOOP; silmukka
RETURN
MSEC1 MOVLW 0xF9; 4 microsec yleiskustannukset
NOP; (2 Call) (ylp-"NOP")
MICRO4 ADDLW 0xFF; vähennetään 1 W
BTFSS Tila, 2; ohittaa, kun nolla
-Goto MICRO4; silmukka
RETURN

BANKSEL PORTA
BSF PORTB, 4
CLRF TXREG

A / D initialsation (A / D ei käytetä)
BANKSEL ADCON1; Määritä A / D Portit, vasemmalle Perusteleminen
MOVLW B'00000100 "; RA0 = Analoginen tulo
MOVWF ADCON1; Rest kuten Digital I / O
BANKSEL ADCON0
MOVLW B'10000000 "; Fosc/32
MOVWF ADCON0

; Kytke A / D
BANKSEL ADCON0
BSF ADCON0, 0; Sitch A / D
CALL DELAY2

ATOD
BSF PORTB, 0
BSF ADCON0, 2; Käynnistä A / D muuntaminen
ATODLOOP
BTFSC ADCON0, 2; Tarkista, jos muuntaminen on päättynyt
Goto ATODLOOP; NO
BANKSEL OSOITE
MOVF OSOITE, 0

; Transmit tiedot WREG kun toimitettava rekisteri on tyhjä.
TransmitSerial:
BANKSEL PORTA; valitse pankki 0
BTFSS PIR1, TXIF, tarkista jos lähetin varattu
Goto -1dollari
ja odota kunnes lähetin ei ole varattu
MOVWF TXREG
RETURN
BTFSC W, 7
BTFSC W, 6
CALL DELAY1
CLRF TXREG
Goto ATOD
loppu

tämä ohjelma on tehdä lähetyksen kautta UART välistä viestintää pic16f73 ja eb500.se signaali analoginen alkaen Porta, 0, silloin ei tulosta digitaalisen ja lähettää sen tx UART.

erilaisia osalta

 

Welcome to EDABoard.com

Sponsor

Back
Top