Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»
Отчет по лабораторной работе №5
Преподаватель: Ухов А.А.
Выполнили: Прутковский В.
Тарасов К.
Гр. 7203
Санкт-Петербург
2011
Задание 1.
Написать программу для отображения на экране ЖКИ тестовой строки «LCDTest» двумя способами
а) по символьно:
// main.c
#include "includes.h"
#include "irq.h"
const char LCD_Info [] = "LCD Test";
void Delay(int value) //Caaa??ea ia value iee?inaeoia
{
for(int j = 0; j < value; j++)
for(int i = 0; i < 10; i++)
i = i;
}
void InitVIC(void)
{
DWORD i = 0;
DWORD *vect_addr, *vect_cntl;
VICINTENCLEAR = 0xFFFFFFFF; //Eieoeaeecaoey VIC
VICADDRESS = 0;
VICINTSELECT = 0;
for(i = 0; i < VIC_SIZE; i++) //Ia?aeuiay onoaiiaea a 0 aaeoi?ia
{
vect_addr = (DWORD *)(VIC_BASE_ADDR + VECT_ADDR_INDEX + i * 4);
vect_cntl = (DWORD *)(VIC_BASE_ADDR + VECT_CNTL_INDEX + i * 4);
*vect_addr = 0x0;
*vect_cntl = 0xF;
}
}
void InstallIRQ(DWORD IntNumber, void *HandlerAddr, DWORD Priority)
{
DWORD *vect_addr;
DWORD *vect_cntl;
VICINTENCLEAR = 1 << IntNumber; //Cai?ao i?a?uaaiey ia a?aiy iano?ieee
// Iiene ia?aiai naiaiaiiai VIC aa?ana
vect_addr = (DWORD *)(VIC_BASE_ADDR + VECT_ADDR_INDEX + IntNumber * 4);
vect_cntl = (DWORD *)(VIC_BASE_ADDR + VECT_CNTL_INDEX + IntNumber * 4);
// Onoaiiaea aaeoi?a i?a?uaaiey
*vect_addr = (DWORD)HandlerAddr;
*vect_cntl = Priority;
// ?ac?aoaiea i?a?uaaiey
VICINTENABLE = 1 << IntNumber;
}
__irq __nested __arm void TimerHandler0()
{
T0IR = 0x01;
FIO2PIN = ~(FIO2PIN); // Eiaa?oe?iaaou naaoiaeiau
VICADDRESS = 0; // Na?in i?a?uaaiey
}
void InitTimer0()
{
T0TCR &= ~0x01; // Cai?aoeou oaeia?
T0IR = 0x01; // Eiioeao?aoey ?aaeno?a i?a?uaaiee
T0CTCR = 0; // Eiioeao?aoey ?aaeno?a oi?aaeaiey
T0PC = 0; // Eiioeao?aoey ?aaeno?a i?aaaaeeoaey
T0MR0 = 1200000; // Eiioeao?aoey ?aaeno?a n?aaiaiey
// ?anoioa PCLK = 12 IAo
// aaeeony ia T0MR0 e aaao ?anoioo i?a?uaaiee 10Ao
T0MCR = (0x01 | 0x02); // Eiioeao?aoey ?aaeno?a oi?aaeaiey ?a?eia n?aaiaiey
InstallIRQ( TIMER0_INT, (void *)TimerHandler0, 0x03);
T0TCR |= 0x01; // ?ac?aoeou ?aaioo oaeia?a
}
void SetDataBusDirection(BOOL dir) // Onoaiiaea iai?aaeaiey ia?aaa?e aaiiuo
{
if(dir) //Ia?aiaoa? 1 - caienu
{
FIO1DIR |= BIT_1; //DB0
FIO1DIR |= BIT_4; //DB1
FIO1DIR |= BIT_8; //DB2
FIO1DIR |= BIT_9; //DB3
FIO1DIR |= BIT_10; //DB4
FIO1DIR |= BIT_14; //DB5
FIO1DIR |= BIT_15; //DB6
FIO1DIR |= BIT_16; //DB7
}
else //A i?ioeaiii neo?aa ?oaiea
{
FIO1DIR &= ~BIT_1; //DB0
FIO1DIR &= ~BIT_4; //DB1
FIO1DIR &= ~BIT_8; //DB2
FIO1DIR &= ~BIT_9; //DB3
FIO1DIR &= ~BIT_10; //DB4
FIO1DIR &= ~BIT_14; //DB5
FIO1DIR &= ~BIT_15; //DB6
FIO1DIR &= ~BIT_16; //DB7
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.