DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

Рік:
2015
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Мікропроцесори
Група:
ІБ – 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.
Антиботан аватар за замовчуванням

2015

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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