Програма для стенду-передавача (асемблер) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Програма для стенду-передавача (асемблер)



$nolist

$include(c:\asm51\mod51)

$list

LEFT_IND equ 0A000h

RIGHT_IND equ 0B000h

POINTS equ 0C000h

A55 equ 8000h

B55 equ 8001h

C55 equ 8002h

RUS55 equ 8003h

UW equ 80h

CFG equ 0C000h

UW2 equ 00000010b

ORG 0000

MOV DPTR,#RUS55

MOV A,#UW

MOVX @DPTR,A

; MOV TH1,#255;38400

; MOV TH1,#254;19200

MOV TH1,#252;9600

; MOV TH1,#248;4800

; MOV TH1,#240;2400

; MOV TH1,#224;1200

CLR TR1

MOV TH1,#252

MOV PCON,#10000000b

MOV SCON,#01010000b

MOV TMOD,#00100010b

MOV DPTR,#CFG

MOV A,#UW2

MOVX @DPTR,A

SETB TR1

M2: MOV R0,#00b

MOV DPTR,#C55

MOV A,R0

MOVX @DPTR,A

M4: MOV A,#00h

MOV DPTR,#A55

MOVX @DPTR,A

M1: INC A

MOV DPTR,#A55

MOVX @DPTR,A

JNB P1.7,M3

CJNE A,#0FFh,M1

INC R0

MOV DPTR,#C55

MOV A,R0

MOVX @DPTR,A

CJNE R0,#04h,M4

JMP M2

M3: MOV R3,A

MOV A,R0

MOV R1,A

MOV A,R3

MOV R0,A

mov A,R1

call SEND

mov A,R0

call SEND

call DEL

jmp M2

 

SEND:

CLR TI

MOV SBUF,A

COUT: JNB TI, COUT

CLR TI

RET

DEL: MOV R0,#06h

MM: MOV R1,#0FFh

M: MOV R2,#0FFh

DJNZ R2,$

DJNZ R1,M

DJNZ R0,MM

RET

END

Програма для стенду-приймача (С++)

#include <8051.h>

#include <string.h>

#include "bitdef.h"

#include "ev8031.c"

int main(){

char channel=1,tmp,flag=0,HI,LOW;;

UC_REG=channel;

PCON=_10000000; //Подвійна швидкість мередачі

SCON=_01010000; /8-бітний режим передачі

TMOD=_00100010;

TCON=0;

// TH1=256-1; //38400

// TH1=256-2; //19200

TH1=256-4; //9600

// TH1=256-8; //4800

// TH1=256-16; //2400

// TH1=256-32; //1200

TR1=1; //запуск таймера T1

TH0=0xff-80;

TR0=1; //запуск таймера T0

ET0=1; //дозвіл переривань від T0

EA=1; //глобальний дозвіл переривань

new_dotsi=0;

hd_turn_on(); //ввімкнення РК-дисплея

hd_init(); //ініціалізація РК-дисплея

q: if(!P1_1){ //перевірка стану кн. SW2

 

hd_init(); //ініціалізація РК-дисплея

string_to_hd(4,1,"STOP"); //вивід повідомлення на РК-дисплей

flag=0;

}

if(!P1_3){ //перевірка стану кн. SW1

hd_init(); //ініціалізація РК-дисплея

string_to_hd(4,1,"RUN"); //вивід повідомлення на РК-дисплей

flag=1;

}

if (RI){ //перевірка завершення прийому даних

RI=0; //очистка прапорця прийому

HI=SBUF; //зчитування отриманих даних

if(HI>4) goto q;

lefti=HI; //виведення отриманих даних

}

else{

goto q;

}

q2: if(!P1_1){ //перевірка стану кн. SW2

hd_init(); //ініціалізація РК-дисплея

string_to_hd(4,1,"STOP"); //вивід повідомлення на РК-дисплей

flag=0;

}

if(!P1_3){ //перевірка стану кн. SW1

hd_init(); //ініціалізація РК-дисплея

string_to_hd(4,1,"RUN"); //вивід повідомлення на РК-дисплей

flag=1;

}

if (RI){ //перевірка завершення прийому даних

RI=0; //очистка прапорця прийому

LOW=SBUF; //зчитування отриманих даних

righti=LOW; //виведення отриманих даних

}

else{

goto q2;

}

tmp=HI<<6;

tmp=tmp+(LOW>>2);

if(flag){

pDAC=tmp; //запис даних в ЦАП

}

else{

pDAC=0; //запис даних в ЦАП

}

goto q;

}

Завдання до теми

Варіанти завдань наведено в табл. 7.4. Номер варіанта видає викладач.

 

Таблиця 7.4 – Варіанти завдань для виконання лабораторної роботи

Текст індивідуального завдання
  Реалізувати систему, яка проводить зчитування 4-х натискань клавіш і передає отриманні данні по послідовному інтерфейсу, плата приймач повинна відображати отриманні данні на статичному індикаторі (чотиризначне число). (швидкість передачі 1200)  
  Реалізувати систему, яка проводить зчитування числа набраного на клавіатурі (значення не більше 255) і передає по послідовному інтерфейсу. Отриманні данні використовуються в якості керуючого впливу для регулювання швидкості обертання вентилятора. (швидкість передачі 9600)
  Реалізувати систему, яка зчитує данні з АЦП, і передає по послідовному інтерфейсу. При досягненні заданого значення ввімкнути вентилятор.
  Реалізувати систему передачі даних зчитаних з АЦП, передати по послідовному інтерфейсу, вивести отриманні данні на РК-дисплеї. (швидкість передачі 2400)  
   
Продовження таблиці 7.4
  Реалізувати процедуру зчитування даних з АЦП, передачу даних по послідовному інтерфейсу. З отриманих п’яти вибірок даних вивести на РК-дисплей значення обране шляхом медіанної фільтрації. (швидкість передачі 4800)  
  Реалізувати систему зчитування двох двозначних чисел з клавіатури та передачу їх по послідовному інтерфейсу. Отриманні данні додати, та вивести на РК-дисплеї вираз у вигляді "Х+У=Z". (швидкість передачі 1200)  
  Реалізувати систему яка порівнює данні отримані від ПК, номер натиснутої клавіші (можна емулювати шляхом передачі даних за допомогою відповідного програмного забезпечення), з номером клавіші на клавіатурі стенду. Якщо їх значення збігаються, вивести певне повідомлення на статичний індикатор. (швидкість передачі 9600)  

Хід роботи

1. Вивчити методи послідовної передачі даних між периферійними пристроями.

2. Розробити алгоритм і програму для виконання індивідуального завдання до початку лабораторного заняття.

3. Ввести програму індивідуального завдання на персональному комп'ютері.

4. Завантажити програму в стенд ОЕОМ. Переконатися в правильному виконанні індивідуального завдання, при негативному результаті здійснити зміну алгоритму або програми и повторити завантаження програми в стенд ОЕОМ.

Зміст звіту

1. Назва, тема і мета лабораторної роботи.

2. Завдання на лабораторну роботу.

3. Опис виконання роботи.

4. Лістинг програми.

  1. Висновки по роботі.

Контрольні питання

1. Призначення і сфера застосування передачі даних по послідовному інтерфейсу.

2. Фізична характеристика сигналів в інтерфейсі RS232.

3. Часові параметри, визначення швидкості обміну інтерфейсу RS232.

4. Протокол обміну інтерфейсу RS232.

5. Синхронні і асинхронні канали послідовної передачі даних.

6. Регістри що використовуються при ініціалізації послідовного порту ОЕОМ.

7. Адресація послідовних портів ПЕОМ.

8. Функції BIOS для інтерфейсу RS232.

Література: [1, с. 48–76; 2, с. 134–155].


ЛАБОРАТОРНА РОБОТА № 8



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 95; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.22.169 (0.009 с.)