101213_16F883_EE_Test01.ASM


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