Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Мікропроцесори
Група:
ІБ – 42

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет “Львівська політехніка”  Звіт про виконання лабораторної роботи №4 з курсу “Мікропроцесорні пристрої ”   Текст програми: #include <90S2313.h> #include <delay.h> #include <stdio.h> #define CR 0x0D #define LF 0x0A #define Ctrl_Z 0x1A; #define Timer1_1 7812 #define Timer1_2 1302 #define Timer0_1 36 //Speed #define Baud_Rate 9600 //USR #define RXC 7 #define TXC 6 #define UDRE 5 #define FE 4 #define OR 3 //UCR #define RXCIE 7 #define TXCIE 6 #define UDRIE 5 #define RXEN 4 #define TXEN 3 #define CHR9 2 #define RXB8 1 #define TXB8 0 //Shlejfffffffff #define S1_PORT PORTD #define S2_PORT PORTB #define S1_DDR DDRD #define S2_DDR DDRB #define S1_PIN PIND #define S2_PIN PINB #define SCH_1 2 #define SCH_2 0 #define LED_PORT PORTD #define LED_DDR DDRD #define LED_PIN PIND #define LED 6 #define SW_PORT PORTB #define SW_DDR DDRB #define SW_PIN PINB #define SW 7 //TCCR0 #define CS02 2 #define CS01 1 #define CS00 0 //TCCR1A #define COM1A1 7 #define COM1A0 6 #define PWM11 1 #define PWM10 0 //TCCR1B #define ICNC1 7 #define ICES1 6 #define CTC1 3 #define CS12 2 #define CS11 1 #define CS10 0 //TIMSK #define TOIE1 7 #define OCIE1A 6 #define TICIE 3 #define TOIE0 1 unsigned char State = 0; #define State_Off 0 //vykl #define State_On 1 //vkl unsigned char S1_Status; #define No_Alarm 0 //no #define Alarm 1 //yes #define No_Control 2 //no control unsigned char S2_Status; unsigned char Number[13]={0}; #include <GSM.h> //#include <sleep.h> interrupt[7] void Timer0_Ovf(void) { unsigned char temp; temp=SW_PIN; temp=temp&(1<<SW); if(State==State_Off) { if(temp==0) State=State_On; } else if(State==State_On) { if(temp!=0) State=State_Off; } } interrupt[5] void Timer1_COMP(void) { unsigned char temp; temp = PORTD ^ 0b01000000; PORTD = temp; } void Pin_Init(void); void SMS_Send(char* cmd, unsigned char type); void Schleif_Test(unsigned char s1, unsigned char* status,unsigned char number); enum SMS_Type{Security_On,Security_Off,Alarm_Schleif_1, Alarm_Schleif_2}; void main(void) { unsigned char k,m,temp; unsigned char s1; unsigned char CMD[25]={0}; unsigned char My[30]={0}; //Answer At comand unsigned char T_1, T_2; unsigned char S_1,S_2; //0-off,1-rozimk,2-zamkn Pin_Init(); UBRR=25; UCR=(1<<RXEN)+(1<<TXEN); delay_ms(4000); CMD[0]='A'; CMD[1]='T'; CMD[2]='E'; CMD[3]='0'; CMD[4]=CR; puts(CMD); k=0; //delay_ms(100); while(k!=2) { m=getchar(); if(m==LF) k++; } CMD[2]='+'; CMD[3]='C'; CMD[4]='P'; CMD[5]='B'; CMD[6]='S'; CMD[7]='='; CMD[8]='"'; CMD[9]='S'; CMD[10]='M'; CMD[11]='"'; CMD[12]=CR; puts(CMD); k=0; //delay_ms(100); while(k!=2) { m=getchar(); if(m==LF) k++; } CMD[3]='C'; CMD[4]='P'; CMD[5]='B'; CMD[6]='R'; CMD[7]='='; CMD[8]='?'; CMD[9]=CR; CMD[10]=0; puts(CMD); k=0; m=0; //delay_ms(100); while(k!=4) { My[m++]=getchar(); if(My[m-1]==LF) k++; if(m==29) m=0; } s1=My[10]; CMD[3]='C'; CMD[4]='P'; CMD[5]='B'; CMD[6]='R'; CMD[7]='='; CMD[8]=s1; CMD[9]=CR; CMD[10]=0; puts(CMD); k=0;m=0;temp=0; //delay_ms(100); while(k!=4) { temp=getchar(); if(temp=='"') m++; else if((m>0)&(m<5)) { My[m-1]=temp; m++; } if(temp==LF) k++; } S_1=My[0]-0x30; S_2=My[1]-0x30; T_1=(My[2]-0x30+1)*10; T_2=(My[2]-0x30+1)*10; s1=s1+1; CMD[8]=s1; puts(CMD); k=0;m=0;temp=0; //delay_ms(100); while(k!=4) { temp=getchar(); if(temp=='"') m++; else if((m>0)&(m<14)) { Number[m-1]=temp; m++; } if(temp==LF) k++; } CMD[4]='M'; CMD[5]='G'; CMD[6]='F'; CMD[7]='='; CMD[8]='1'; CMD[9]=CR; CMD[10]=0; puts(CMD); k=0; while(k!=2) { m=getchar(); if(m==LF) k++; } //sleep_enable(); #asm ldi r24, (1<<5); out MCUCR, r24 #endasm L1: State=0; S1_Status=0; S2_Status=0; TIMSK=(1<<TOIE0); TCCR0=(1<<CS02)+(1<<CS00); #asm("sei"); while(1) { //idle(); #asm("sleep"); if(State==1) break; } TCCR0=0; for(temp=0;temp<T_1;temp++) delay_ms(1000); SMS_Send(CMD,Security_On); OCR1=Timer1_1; //TCCR1A=(1<<COM1A0); TCCR1B=(1<<CS12)+(1<<CTC1); TIMSK = TIMSK + (1<<OCIE1A); TCCR0=(1<<CS02)+(1<<CS00); while(1) { //idle(); #asm("sleep"); if(State==0) { TCCR0=0; SMS_Send(CMD,Security_Off); TCCR1B=0; TCCR1A=0; LED_PORT.LED=0; delay_ms(3000); LED_PORT.LED=1; break; } else { Schleif_Test(S_1,&S1_Status,1); Schleif_Test(S_2,&S2_Status,2); if(S1_Status==1||S2_Status==1) { OCR1=Timer1_2; TCNT1=0; TCCR0=0; for(temp=0;temp<T_2;temp++) delay_ms(1000); temp=SW_PIN; temp=temp&(1<<SW); if(temp==0) { if(S1_Status==1) { SMS_Send(CMD,Alarm_Schleif_1); S1_Status=2; } if(S2_Status==1) { SMS_Send(CMD,Alarm_Schleif_2); S2_Status=2; } delay_ms(4000); TCCR0=(1<<CS02)+(1<<CS00); } else { State=0; TCCR0=0; SMS_Send(CMD,Security_Off); TCCR1B=0; TCCR1A=0; LED_PORT.LED=0; delay_ms(3000); LED_PORT.LED=1; break; } } } } goto L1; } void Pin_Init(void) { S1_PORT.SCH_1=0; S1_DDR.SCH_1=0; S2_PORT.SCH_2=0; S2_DDR.SCH_2=0; LED_PORT.LED=1; LED_DDR.LED=1; SW_PORT.SW=1; SW_DDR.SW=0; } void SMS_Send(unsigned char *cmd, unsigned char type) { int i; unsigned char m; cmd[0]='A'; cmd[1]='T'; cmd[2]='+'; cmd[3]='C'; cmd[4]='M'; cmd[5]='G'; cmd[6]='S'; cmd[7]='='; cmd[8]='"'; for(i=9;i<22;i++) cmd[i]=Number[i-9]; cmd[22]='"'; cmd[23]=CR; cmd[24]=0; puts(cmd); while(m!='>') m=getchar(); m=getchar(); if(type==Alarm_Schleif_1||type==Alarm_Schleif_2) { cmd[0]='S'; cmd[1]='l'; cmd[2]='e'; cmd[3]='i'; cmd[4]='f'; cmd[5]=' '; cmd[7]=Ctrl_Z; cmd[8]=CR; cmd[9]=0; if(type==Alarm_Schleif_1) cmd[6]='1'; else cmd[6]='2'; } else if(type==Security_On||type==Security_Off) { cmd[0]='S'; cmd[1]='e'; cmd[2]='c'; cmd[3]='u'; cmd[4]='r'; cmd[5]='i'; cmd[6]='t'; cmd[7]='y'; cmd[8]=' '; cmd[9]='O'; if(type==Security_On) { cmd[10]='n'; cmd[11]=Ctrl_Z; cmd[12]=CR; cmd[13]=0; } else { cmd[10]='f'; cmd[11]='f'; cmd[12]=Ctrl_Z; cmd[13]=CR; cmd[14]=0; } } puts(cmd); } void Schleif_Test(unsigned char s1,unsigned char* status,unsigned char number) { unsigned char temp; if(s1!=0) { if(number==1) { temp=S1_PIN; temp=temp&(1<<SCH_1); } else { temp=S2_PIN; temp=temp&(1<<SCH_2); } if((s1==1)&(temp==0)&(*status!=No_Control)) *status=Alarm; else if((s1==1)&(temp!=0)&(*status==No_Control)) *status=No_Alarm; if((s1==2)&(temp!=0)&(*status!=No_Control)) *status=Alarm; else if((s1==2)&(temp==0)&(*status==No_Control)) *status=No_Alarm; } } Перша комірка SIM-карти Status 1206 Друга комірка SIM-карти Admin +380967387543 UBRR=25 DIV1=256 Timer1_1=7812 Timer1_2=1306 DIV0=1024 Timer0_1=36 Схема:  ВИСНОВОК: на лабораторній роботі ми ознайомилися з принципами побудови охоронних систем з GSM сигналізацією їх програмно-апаратною реалізацією на AVR мікроконтроллерах. А також здобули навики написання програм для AVR мікроконтроллерів на мові С в середовищі CodeVisionAVR.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!