Documente Academic
Documente Profesional
Documente Cultură
PROIECT 2
Automat finit pentru detectarea secvenei 1011 ntr-un ir binar
Coordonator tiintific:
as. ing. Bogdan FLOREA
Student:
Adriana Vcrelu
Grupa: 432B
2010-2011
Cuprins:
1. Enun
2. Rezumatul proiectului
3. Aspecte teoretice ale proiectului
- funcionarea automatului
- elemente de OrCAD
- elemente ale microcontrollerului PIC
4. Simularea OrCAD
- schema implementat cu bistabili J-K
- semnalele obinute
5. Implementarea automatului pe microcontroler
- schema logic a programului
- programul in ANSI C
1. Enun:
2. Rezumatul proiectului:
Proiectul const n implementarea unui automat cu stri finite ce detecteaz un ir de bii
1011.
Proiectul trebuie implementat prin dou metode, (1) folosind bistabili J-K, inversoare i pori SAUNU i (2) cu ajutorul unei aplicaii PICkit 1 FLASH Starter Kit, echipat cu microcontrolerul PIC
12F675
Pentru implementarea cu ajutorul bistabililor J-K i a circuitelor logice combinaionale aplicm
fiecrei ecuaii de comand formulele lui de Morgan i simplificm ecuaiile date.
Dup aceast etap, implementm circuitul n PSpice pentru a-l simula i testa.
Pentru a implementa automatul pe PIC, n primul rnd trebuie s implementm iniializarea
registrelor microcontrollerului, apoi citirea biilor de pe switch-uri, funcia de detecie a secvenei
cerute, i nu n ultimul rnd trebuie s calculm valoarea de reload pentru frecvena de 20 Hz a
Timer1 ( valorile de reload din T1H i T1L ).
Tranziia ntre stri se face n funcie de valoarea intrrii i trebuie s detectm irul 1011 n
starea 4.
- elemente de OrCAD
OrCAD 16.2 este o suit de programe produse de Cadence, care conine Capture ( i variaiile
acestuia ), utilitarul specializat pe desenarea schemelor electronice, Layout, utilitarul specializat n
proiectarea placilor electronice imprimate ( PCB ), PSpice ( i variaiunile acestuia ), utilitarul n care
se pot simula scheme electronice sub diveri parametri.
PSpice poate simula circuite analogice n domeniul timp ( regim tranzitorilu ), n domeniul
frecven ( AC Sweep ), poate calcula PSF-ul ( punctul static de funcionare ) al circuitului, sub
diveri parametri de testare. De asemenea, se pot simula i circuite digitale, dar i variaiuni ale
circuitelor analogice cu cele digitale.
4. Simularea OrCAD:
Schema implementat cu bistabili J-K i pori SAU-NU i inversoare.
;-
;-
;-
;-
;-
;InputI este un microswitch extern, care se va lega la GP5, iar SW1, legat la GP3,
;va determina prin apsare intrarea n starea urmtoare Cablarea celor trei comutatoare se realizeaz
astfel nct prin apsarea lor s genereze 0 logic pe pinul microcontrolerului iar relaxarea lor s
genereze 1 logic.
list
p=12f675
#include
<p12f675.inc>
errorlevel -302
fisierul list
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF &
_PWRTE_ON & _INTRC_OSC_NOCLKOUT
- Cod Protection
- WatchDog Timer
cblock
0x20
STATE_COUNTER
STATE_DEBOUNCE
CountH
CountL
DEBOUNCE
FLAGS
endc
#define TRIS_D6_D7
valoarea ei binara
ORG
0x000
nop
goto
Initialize
ORG
0x004
Timerl_Interrupt
movlw 0x3C
movwf TMR1H
movlw 0x0B0
movwf TMR1L
btfss
FLAGS,6
goto
bcf
FLAGS,6
bsf
STATUS,RP0
;Resetare flag D6
movlw TRIS_D6_D7_OFF
movwf TRISIO
bcf
;Stingere led D6
STATUS,RP0
movwf GPIO
goto
LED_D6_ON
bsf
FLAGS,6
bsf
STATUS,RP0
; Setare flag 06
movlw TRIS_D6_D7
movwf
TRISIO
; Activare D6 D7
bcf
STATUS,RP0
movlw D6_ON
movwf
bcf
STATUS,RP0
bcf
RET_I
retfie
Initialize
; call 0x3FF
utilizrii simulatorului
bsf
STATUS,RP0
movwf OSCCAL
de calibrare
;Selectare Bank 1
;ncrcarea registrului OSCCAL cu valoarea factorului
movlw 0x7f
movwf OPTION_REG
movlw B'00111111'
movwf TRISIO
movwf WPU
clrf
ANSEL
bcf
clrf
STATUS,RP0
;Selectare Bank 0
GPIO
movlw B'00000111'
movwf CMCON
movlw B'10000111'
movwf OPTION_REG
bsf
STATUS,RP0
clrf
VRCON
bsf
bcf
STATUS,RP0
movlw 0x07
bsf
INTCON,PEIE
bcf
bsf
INTCON,GIE
movlw 0xBE
movwf TMR1H
movlw 0xE6
movwf TMR1L
clrf
clrf
STATE_DEBOUNCE
clrf
CountH
clrf
CountL
clrf
FLAGS
call
movf STATE_COUNTER,w
andlw B'00000111' ;Se mascheaz ultimii trei bii din STATE_COUNTER
addwf PCL, f
(WORKREGISTER)
goto
State0
goto
State1
goto
State2
goto
State3
goto
State4
State0
T1CON
STATUS,RP0
movlw b'00111111'
movwf TRISIO
bcf
btfss
InputI=1
STATUS,RP0
GPIO,4
goto
State_Machine
incf
goto
State_Machine
State1
;Seteaz trecerea la starea urmtoare dac InputI = 0, sau rmne n STATE1 dac este 1
bsf
STATUS,RP0
movlw b'00111111'
movwf TRISIO
bcf
STATUS,RP0
btfsc
GPIO,4
;citeste InputI
goto
State_Machine
incf
goto
State_Machine
State2
bsf
STATUS,RP0
movlw b'00111111'
movwf TRISIO
bcf
STATUS,RP0
movlw 0x0
movwf STATE_COUNTER ;Preseteaz State2
btfss
GPIO,4
goto
State_Machine
;Citeste InputI
movlw 0x3
movwf STATE_COUNTER
goto
State_Machine
State3
STATUS,RP0
movlw b'00111111'
movwf TRISIO
bcf
STATUS,RP0
movlw 0x2
movwf STATE_COUNTER ;Preseteaz State2
btfss
GPIO,4
goto
State_Machine
;Citeste InputI
movlw 0x4
movwf STATE_COUNTER
goto
State_Machine
State4
movlw TRIS_D6_D7
movwf TRISIO ; Configurarea pinilor pentru aprinderea ledului D6 BANKO
movlw 0x1
movwf T1CON ; Activarea circuitului Timerl movlw
movlw 0x2
movwf STATE_COUNTER ;Preseteaz State2
btfss
GPIO,4
goto
State_Machine
movlw 0x1
movwf STATE_COUNTER
goto
State_Machine
;Citeste InputI
0x0
Button_Press
btfss
STATE_DEBOUNCE,0
goto
Debounce_1
goto
Debounce_2
Debounce_1
bcf
STATUS, RP0
btfsc
GPIO,3
goto
Debounce_1
incf
STATE_DEBOUNCE, f
Temp
movlw 0x21
temporizare
movwf CountH
M1
movlw 0x63
movwf CountL
M2
decfsz CountL,f
se sare instruciunea
;urmtoare (goto M2)
goto M2
0, se execut salt la M2
decfsz CountH,f
registru este 00H
M1
btfss
STATE_DEBOUNCE,0
goto
Button_Press
retlw 0
acumulatorului egal 0
Debounce_2
bcf
STATUS,RP0
btfss
GPIO,3
goto
Debounce_2
clrf
STATE_DEBOUNCE
goto
Temp
end