1 | ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 16 F883 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
2 | ;''''''''''''''''''''''''''''''''''' 28.06.2010 '''''''''''''''''''''''''''''''''''''''''''''''''
|
3 | ;'''' PORTA 8-Bit Ausgang '''''''''BORTB 8-BIT Eingang '''''''''''''''''''''
|
4 | ;'' PORTC Bit 0-5 Ausgang Bit 6 (TX) -Eingang BIT7 (RX) -Eingang '''
|
5 | ;''''''''''''''''''''''''''''''100620 16F883 EUSART_TEST_01.asm '''''''''''''''''''''''''
|
6 | list p=16F883
|
7 | #include <p16F883.inc>
|
8 |
|
9 | __config _CONFIG1, _DEBUG_ON & _LVP_OFF &_FCMEN_OFF &_IESO_OFF &_BOR_OFF & _CPD_OFF & _CP_OFF &_MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
|
10 | __config _CONFIG2, _WRT_OFF &_BOR21V
|
11 | ;vorstehende Konfiguration kein Memory Schreibschutz
|
12 | ;
|
13 |
|
14 |
|
15 | ;
|
16 | ERRORLEVEL -302
|
17 | start
|
18 | ;-----------------------------------
|
19 | BANKSEL PORTA ;B0
|
20 | CLRF PORTA ;Init PORTA
|
21 |
|
22 | BANKSEL ANSEL ;B3selektion Analog oder Digital
|
23 | CLRF ANSEL ;alle RA <7:0> digital
|
24 |
|
25 | BANKSEL TRISA ;B1
|
26 | movlw b'00000000' ;PortA komplett alsAusg
|
27 | MOVWF TRISA ;B1
|
28 | ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
29 |
|
30 | BANKSEL PORTB ;B0
|
31 | CLRF PORTB ;Init PORTB
|
32 |
|
33 | BANKSEL ANSELH
|
34 | CLRF ANSELH;bcf ANSELH,ANS8- ;bcf ANSELH,ANS13
|
35 | BANKSEL TRISB ;B1
|
36 | movlw b'00000000' ;PortB komplett als Ausgang
|
37 | MOVWF TRISB ;B1
|
38 | ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
39 | BANKSEL PORTC ;B0
|
40 | CLRF PORTC ;Init PORTC
|
41 |
|
42 | BANKSEL TRISC ;B1
|
43 | movlw b'00000000' ;PortC Ausgang
|
44 | MOVWF TRISC ;B1
|
45 |
|
46 | ZOut equ 20h
|
47 | VZZ equ 21H
|
48 | ZX1 equ 22H
|
49 | XFLAG equ 23H
|
50 | DATA_EE_ADDR equ 24h
|
51 | DATA_EE_DATA equ 25h
|
52 | ;-----------------------------------
|
53 | BANKSEL PORTA
|
54 |
|
55 | ;''''''''''''''''''''''''''''''' bis hier von WG '''''''''''''''''''''''''''''''''''''''''
|
56 |
|
57 |
|
58 | movlw d'1'
|
59 | call OSZI_16F883
|
60 |
|
61 |
|
62 |
|
63 | loop ; Arbeits-Schleife
|
64 |
|
65 | ;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
66 |
|
67 | movlw 0x01
|
68 | movwf DATA_EE_ADDR ;Inhalt absolute Lese-Adresse
|
69 | ;
|
70 | movlw b'10101010'
|
71 | movwf DATA_EE_DATA ;Inhalt: absolute Daten ('10101010')
|
72 | ;zum Schreiben ins EEPROM
|
73 |
|
74 | call EE_16F883 ;call Schreiben 16F883
|
75 | Banksel PORTC
|
76 | movlw b'11100111' ;Kontroll-Ausgabe ob geschrieben wurde
|
77 | movwf PORTC
|
78 | ;call Stop
|
79 | call EElesen
|
80 | call Stop
|
81 | goto loop
|
82 | ;
|
83 | ;++++++++++++++++++++++++++++++++++++++++++++++
|
84 | EElesen
|
85 | Banksel EEADR
|
86 | movlw 0x01 ; ich möchte die EEPROM-Zelle Nr. 01h auslesen
|
87 | MOVWF EEADR ; dazu schreibe ich die Adresse 01h in EEADR
|
88 | Banksel EECON1
|
89 | BCF EECON1, EEPGD ; ich möchte aus dem Daten-Speicher lesen
|
90 | BSF EECON1, RD ; EEPROM Leseprozess starten
|
91 | Banksel EEDATA
|
92 | MOVF EEDATA, W ; Die Daten der EEPROM Zelle nach W kopieren
|
93 | Banksel PORTA
|
94 | movwf PORTA
|
95 | return
|
96 | ;++++++++++++++++++++++++++++++++++++++++++++++++++++
|
97 | Stop
|
98 | goto Stop
|
99 | ;++++++++++++++++++++++++++++++++++++++++++++++++++++
|
100 |
|
101 | EE_16F883
|
102 | ;schreiben 16F883
|
103 | BANKSEL EEADR ;
|
104 | EE1 movf DATA_EE_ADDR,w
|
105 | MOVWF EEADR ;Data Memory Address to write
|
106 | movf DATA_EE_DATA,w ;
|
107 | MOVWF EEDAT ;Data Memory Value to write
|
108 | BANKSEL EECON1 ;
|
109 | BCF EECON1, EEPGD ;Point to DATA memory
|
110 | BSF EECON1, WREN ;Enable writes
|
111 | BCF INTCON, GIE ;Disable INTs.
|
112 | BTFSC INTCON, GIE ;SEE AN576
|
113 | GOTO $-2
|
114 | MOVLW b'01010101' ;0x55 ;
|
115 | MOVWF EECON2 ;Write 55h
|
116 | MOVLW b'10101010' ;0xAA ;
|
117 | MOVWF EECON2 ;Write AAh
|
118 | BSF EECON1, WR ;Set WR bit to begin write
|
119 | btfsc EECON1,WR
|
120 | goto $-1 ;wiederholt den Schreibcyklus
|
121 | ; wenn Schreib-Bit nicht zurückgesetzt ist
|
122 | ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
123 | BSF INTCON, GIE ;Enable INTs.
|
124 | ;SLEEP ;Wait for interrupt to signal write complete
|
125 | BCF EECON1, WREN ;Disable writes
|
126 | BCF STATUS, RP0 ;Bank 0
|
127 | BCF STATUS, RP1
|
128 | Return
|
129 | ;+++++++++++++++++++++++++++++++++++++++++++++++++++
|
130 |
|
131 |
|
132 | ;
|
133 | ;'''''''''''''''' 1 MHz '''''''''''''''''''''''''''''''''
|
134 | OSZI_16F883
|
135 | MHz1
|
136 | ;bcf OSCCON,7 ;-------
|
137 | bsf OSCCON,6 ;IRCF2=1
|
138 | bcf OSCCON,5 ;IRCF1=0
|
139 | bcf OSCCON,4 ;IRCF0=0+
|
140 | bsf OSCCON,3 ;OSTS
|
141 | bcf OSCCON,2 ;HTS
|
142 | bcf OSCCON,1 ;LTS
|
143 | bsf OSCCON,0 ;SCS
|
144 | ; bei Bedarf Testschleife
|
145 | ;movf OSCCON,w
|
146 | BANKSEL PORTA ;Bank 0
|
147 | ;movwf PORTB
|
148 | ;call Stop
|
149 | return
|
150 |
|
151 |
|
152 | ;'''''''''''''''''''''''''''''' BEI BEDARF AKTIVIEREN ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
153 | ;voreingestellte Daten für den EEPROM ab der Zelle 00h
|
154 | org H'2100' ; Adresse des EEPROM für den Brenner
|
155 | de B'10000001' ; 0
|
156 | de B'01000010' ; 1
|
157 | de B'11000011' ; 2
|
158 | ;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
159 |
|
160 |
|
161 |
|
162 |
|
163 |
|
164 |
|
165 |
|
166 |
|
167 | END
|