Микропроцессорные системы

Автор работы: Пользователь скрыл имя, 10 Июня 2014 в 07:19, отчет по практике

Краткое описание

Целью учебной практики является закрепление теоретических знаний и научиться программировать на языке Си.
Учебная практика является составной частью учебного процесса, организуется и производиться учебным заведением, для подготовки специалистов.

Содержание

Введение 3
1 Общая часть
4
Основы языка С
4
1.1.2 Переменные
4
1.1.3 Типы данных
4
1.1.4 Операторы и операнды
5
1.1.5 Директивы
6
Ввод-вывод. Последовательный обмен данными
6
1.2.1 Способы передачи данных
7
1.2.2 Контроллеры UART/USART
8
Встраиваемые системы в робототехнике
8
1.3.1 ROBOPICA. Назначение, аппаратное обеспечение
8
1.3.2 Блок-схема платы управления
9
1.3.3 Назначение и состав Mikro C
9
2 Специальная часть
10
2.1 Разработка приложения для робототехнического устройства RoboPica в среде MikroC
1

Прикрепленные файлы: 1 файл

k_praktike.doc

— 1.09 Мб (Скачать документ)

1)  разрешено использование Высокочастотного Генератора (Hs_OsC) для частоты тактового генератора 10 МГц и выше;

2) сторожевой таймер отключен (WDT_OFF);

3) низковольтное программирование отключено (lVP_OFF).

 

Рисунок 4

 

 

 

В открывшемся поле (рисунок 5) ввести текст листинга 1

 

Рисунок 5

 

По окончанию ввода текста сохранить файл как sound.c. Нажать в меню Project – Build. 

В каталоге с проектом находится файл sound.hex (имя  файла*.hex соответствует имени файла *.c ). Далее вызывается программатор PicKit2 и в него экспортируется  в программатор. Далее программатор подключается к целевому устройству как показано на рисунках 6.1 и 6.2

 

Рисунок 6.1

 

Рисунок 6.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение А

 

1) Первый листинг к лекции 1.

#include <stdio.h> // подключение временного  файла к библиотеке 

#include <stdlib.h> // подключение к библиотеке  временного файла stdlib.h

#include <P18F2550.h> // подключение к  библиотеке файла процессора

void main(void) // главные функции

{

unsigned char z; // без знаковая переменная z

TRISB=0; // настраиваем выводы TRISB как  выход

for (z=0;z<=255;z++) { // задаём массив  от 0 до 255, с шагом 1

Delay10KTCYx(100); // задержка

PORTB=z;} // присваиваем PORTB значение массива z

while(1); // цикл

}

2) Второй листинг к лекции 1.

#include <stdio.h> // подключение временного  файла к библиотеке 

#include <stdlib.h> // подключение к библиотеке  временного файла stdlib.h

#include <P18F2550.h> // подключение к  библиотеке файла процессора

void main(void) // главные функции

{

unsigned char mynum []="012345ABCD";// без знаковое  значение массива от 0 до D c названием  “mynum”

unsigned char z; // беззнаковая переменная z

for (z=0;z<10;z++) { // задаём массив с z=0 и до 9

Delay10KTCYx(255); // задержка

PORTB=mynum[z];} // присваиваем PORTB массив z

while(1); // цикл

}

3) Третий листинг к лекции 1

#include <stdio.h> // подключение временного  файла к библиотеке 

#include <stdlib.h> // подключение к библиотеке временного файлаstdlib.h

#include <P18F2550.h> // подключение к  библиотеке файла процессора

void main(void) // главные функции

{

TRISB=0; // настраиваем выводы TRISB как  выход

for (;;) // задаём бесконечный цикл

{

Delay10KTCYx(100); // задержка

PORTB=0x55; // присваиваем PORTB константу 0х55в 16-ричном коде

Delay10KTCYx(100);

PORTB=0xAA; // присваиваем PORTB константу 0хАА  в 16-ричном коде

}

}

4) Четвёртый листинг к лекции 1

#include <stdio.h> // подключение временного  файла к библиотеке 

#include <stdlib.h> // подключение к библиотеке  временного файла stdlib.h

#include <P18F2550.h> // подключение к библиотеке файла процессора

void main(void) // главные функции

{

unsigned short long z; // без знаковая величина z короткая и длинная

unsigned int x; // без знаковая целая x

TRISB=0; // настраиваем выводы TRISB как  выход

for (z=0;z<10000;z++); // задаём массив с z=0 и до 9999, с шагом 1.

{

PORTB=0x55; // присваиваем PORTB константу 0х55в 16-ричном коде

Delay10KTCYx(3000);

PORTB=0xAA; // присваиваем PORTB константу 0хААв 16-ричном коде

Delay10KTCYx(3000);// задержка

}

5) Пятый листинг к лекции 1

#include <stdio.h> // подключение временного  файла к библиотеке 

#include <stdlib.h> // подключение к библиотеке  временного файла stdlib.h

#include <P18F2550.h> // подключение к  библиотеке файла процессора

void main(void) // главные функции

{

unsigned char mybyte[]; //  массив без знаковый целочисленного типа данных

TRISB=0xFF; // присваиваем TRISB константу 0xFF в 16-ричном коде

TRISC=0; // настраиваем выводы TRISС как  выход

while(1) // цикл

{

mybyte=PORTB; // заносим значение PORTC в mybyte

MCDelay (500); // задержка

PORTC=mybyte; //заносим значение mybyte в PORTC

}

}

void MCDelay(unsigned int itime)

{

    unsigned int i; // без знаковая переменная i

    unsigned int j; // без знаковая переменная j

    for (i=0;i<itime;i++) // для массива i равного 0 и меньше taim с шагом 1.

    for (j=0;j<165;j++) // для массива j равного 0 и меньше 164 с шагом 1.

}

6) Шестой листинг к лекции 1

#include <stdio.h> // подключение временного  файла к библиотеке 

#include <stdlib.h> // подключение к библиотеке  временного файла stdlib.h

#include <P18F2550.h> // подключение к  библиотеке файла процессора

void main(void) // главные функции

{

unsigned char mybyte[]; // массив без знаковый целочисленного типа даных

TRISC=0xFF; // присваиваем TRISB константу 0xFF в 16-ричном коде

TRISB=0; // настраиваем выводы TRISB как выход

TRISB=0; // настраиваем выводы TRISB как выход

while(1) //цикл

{

mybyte=PORTC; // заносим значение mybyte в PORTC

if (mybyte<100) // выполняем улосвие, по которому mybyte меньше 100

PORTB=mybyte; // заносим значение PORTC в mybyte

Else // тогда

PORTA=mybyte; // заносим значение mybyte в PORTA

}

}

1) Первый листинг к лекции 2

#include <stdio.h> // подключение временного  файла stdio.h к библиотеке 

#include <stdlib.h> // подключение к библиотеке  временного файла stdlib.h

#include <P18F2550.h> // подключение к  библиотеке файла процессора

#include <usart.h> // подключение временного файла stdio.h к библиотеке

#include <delays.h> // подключение временного файла delays.h к библиотеке

#pragma config FOSC=HS, PWRT=OFF, BOR=OFF, WDT=OFF, LVP=OFF  // Настройка регистров конфигурации  контроллера: PWRT=OFF – таймер задержки отключен, WDT – сторожевой таймер отключен, LVP = OFF - низковольтное программирование отключено

#define _XTAL_FREQ 8000000 // частота кварцевого  резонатора 8000000

void main () // главные функции

{ unsigned int i; // без знаковая целая  переменная i

TRISC=0x00; // присваиваем PORTB константу 0x00 в 16-ричном коде

    TRISB=0x00; // присваиваем PORTB константу 0x00 в 16-ричном коде

    OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_LOW,17); // задаём режим последовательного синхронно-асинхронного приемопередатчика

    while(1) // цикл

    {

        PORTB=0x00;  // присваиваем PORTB константу 0x00 в 16-ричном коде

        for(i=0;i<40000;i++); // задаём массив  от 0 до 39999, с шагом 1

{

        PORTB=0xff; // присваиваем PORTB константу 0xff в 16-ричном коде

        for(i=0;i<40000;i++); // задаём массив  от 0 до 39999, с шагом 1

        putrsUSART((const far rom char *)"Hellow World");// заносим в постоянную память

        Delay10KTCYx(200); // задаём задержку

    }

   }

2) Второй листинг к лекции 2

#include <stdio.h> // подключение временного  файла stdio.h к библиотеке 

#include <stdlib.h> // подключение к библиотеке  временного файла stdlib.h

#include <P18F2550.h> // подключение к библиотеке файла процессора

#pragma config FOSC=HS // стандарт, в котором  конфигурация High Speed Oscillator отключен

#pragma config WDT=OFF // стандарт, в котором конфигурация сторожевого таймера отключена

#define _XTAL_FREQ 8000000 // определяет индетификатор и последовательность символов

void SerTx(unsigned char);

void main (void) // главная функция

{

TXSTA=0x20; // регистр управления, содержит  биты для управления работой  передатчика

SPBRG=51; // регистр генератора скорости  обмена.

TXSTAbits.TXEN=1; // включение передатчика

RCSTAbits.SPEN=1 ; // включить модуль USART установкой бита SPEN в регистре RCSTA.

while(1);// цикл

{

SerTx('Y');// передача Y на порт COM

SerTx('E'); передача E порт COM

SerTx('S'); передача S на порт COM

 

}

}

void SerTx(unsigned char c) // беззнаковая переменная с

{

while (PIR1bits.TXIF==0);

TXREG=c; // переменную «с» заносим в регистр TXREG

}

1) Первый листинг к лекции 3

void main()

{

Sound_Init(&PORTC, 0);

while(1)

{

if (!PORTA.F4)

sound_play(250,50);

}

}

2) Второй листинг к лекции 3

char *text1 = "kill the emo";

char *text2 = "save the world;

 

void main()

{

Lcd_Init(&PORTD);

Lcd_Cmd(LCD_CURSOR_OFF);

while(1)

{

Lcd_Out(1,4,text1);

Lcd_Out(2,4,text2);

Delay_ms(5000);

Lcd_Cmd(LCD_CLEAR);

Delay_ms(500); // задержка

}

 }

 

 

 

2014



 

 


Информация о работе Микропроцессорные системы