Автор работы: Пользователь скрыл имя, 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) разрешено использование Высокочастотного Генератора (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
// Настройка регистров
#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