Swb-sciaga, Studia, WAT Informatyka, s4 - Swb - systemy wbudowane


EX0 1=Enable External interrupt 0

ET0 1=Enable Timer 0 interrupt

EX1 1=Enable External interrupt 1

ET1 1=Enable Timer 1 interrupt

ES 1=Enable Serial port interrupt

ET2 1=Enable Timer 2 interrupt

EA 0=Disable all interrupts

CP_RL2 0=Reload, 1=Capture select

C_T2 0=Timer, 1=Counter

TR2 0=Stop timer, 1=Start timer

EXEN2 Timer 2 external enable

TCLK 0=Serial clock uses Timer 1 overflow,1=Timer 2

RCLK 0=Serial clock uses Timer 1 overflow,1=Timer2

EXF2 Timer 2 external flag

TF2 Timer 2 overflow flag

PSW - Program status Word - czyli rejestr stanu wykonywanego programu
Przykladowo w 8051 zawiera flagi na 8 bitach:
CY -przeniesienia
AC -pomocniczego przeniesienia
F0 -flaga0 ustawiana przez usera
RS1 - Register bank select 1.
RS0 - Register bank select 0.
OV - flga przepełnienia
F1 -flaga1 ustawiana przez usera
PARITY - wskazanie parzystości

Pamięć mikrokontrolera 8051 została podzielona na następujące obszary:

DATA - bezpośrednio adresowany obszar wewnętrznej pamięci RAM (128 bajtów),

IDATA - pośrednio adresowany obszar wewnętrznej pamięci RAM mikrokontrolera (128 lub 256 bajtów),

BDATA - obszar pamięci RAM, w którym możliwe jest adresowanie pojedynczych bitów

SFR - obszar rejestru funkcji specjalnych w pamięci RAM (special function register),

SBIT - obszar pojedynczego bitu w obrębie rejestru funkcji specjalnych SFR, na przykład sbit OV = PSW^2,

PDATA - tak samo, jak XDATA z tym, że adres dostępu do pamięci zewnętrznej jest 8 bitowy,

XDATA - zewnętrzna pamięć danych, adres dostępu 16 bitowy (64kB),

CODE - pamięć programu; może być albo wewnętrzny, albo zewnętrzny ROM mikrokontrolera

!PSEN (Program Store Enable) = WY sterujące „odczyt z zewnętrzenj pamięci programu”; koniec stanu aktywnego („0”) => wczytanie rozkazu

!ALE (Address Latch Enable) = WY sterujące „zatrzaśnięcie podanego adresu w P0” (zboczem opadającym)

!RST (Reset) = WE sygnału inicjalizacji (resetowania)układu

!EA(External Access) = WE testowane w trakcie inicjalizacji (reset); wymusza pobieranie wszystkich rozkazów z zewnętrznej pamięci programu (ignorowanie pamięci wewnętrznej)

zad 2. 
a) #include<regx51.h> 
void main(void) 
{ while(1){P3_0 ~=P2_0; } } 
b) #include<regx51.h> 
void main(void) 
{ P3_0=0; while(1){; } } 
zad 3. 
3. Był wyswietlacz CC podłączony do P0, mógł wyświetlać 2 cyfry na raz. L i P były podłączone do P2_0 i P2_1. Nalezalo wyswietlic 2 pierwsze cyfry swojego nr indeksu. 
#include<regx51.h> 
unsigned char xdata lewy _at_ 0xFE00; 
unsigned char xdata prawy _at_ 0xFD00; 
void main(void) 
{ while(1) { lewy=0x66; prawy=0x6D; } } 
zad 4. 
4. Była funkcja, należało ją przerobic przy użyciu Sbit. Takie zadanie juz tu chyba bylo i wygladalo tak: 
unsigned char data Key,Key1; 
void ISR_Timer1(void)interrupt 3 
{ Key = P1; 
Key1 = Key; 
Key1 &= 0x3C; 
Key1 = (Key1>>2); 
if(Key1 != 15){P2=Key;} } 
ROZW:
unsigned char data Key,Key1; 
sbit a= Key1^2; 
sbit b= Key1^3; 
sbit c= Key1^4; 
sbit d= Key1^5; 
void ISR_Timer1(void)interrupt 3 
{ Key = P1; 
Key1 = Key; 
Key1 &= 0x3C; 
if((a&b&c&d)!=1){P2=Key;} } 
zad 5. 
5. Do P1 były podłączone diody. Do int0 i int1 przyciski. Licznik (zmienna) zlicza wcisniecia przycisku 1 od zera w góre, a przycisku 2 w dół do zera, a jego stan jest wyswietlany na diodach. 
#include<regx51.h> 
void Init(void) 
{ P1=0xFF; 
IT0 =1; IT1 =1; 
EX0=1; EX1=1; 
EA=1; } 
void ISR_INT0(void) interrupt 0 
{ P1--; } 
void ISR_INT1(void) interrupt 2 
{ if(P1<0xFF){P1++;} } 
void main(void) 
{ Init(); while(1){;} } 



Wyszukiwarka