Аппаратные и программные


помнить, что все подключения и отключения коммуникационного кабеля



Download 3,23 Mb.
Pdf ko'rish
bet155/179
Sana24.02.2022
Hajmi3,23 Mb.
#234030
TuriУчебное пособие
1   ...   151   152   153   154   155   156   157   158   ...   179
помнить, что все подключения и отключения коммуникационного кабеля 
RS-232 необходимо производить при выключенном питании стенда SDK-
1.1! 
Порядок работы со стендом очень прост: 
1. Установите себе компилятор SDCC, утилиту make и M3P. 
2. Подключите учебный стенд к своему компьютеру с помощью кабеля 
RS-232 (кабель входит в комплект поставки стенда). В случае 
подключения через USB вам понадобится переходник USB2Com. 
3. Подключите к стенду прилагаемый источник питания. 
4. Вставьте источник питания в розетку (сеть 220В, 50 Гц). На стенде 
должен загореться светодиод POWER. 
5. Скачайте тестовый пример и войдите в каталог с тестовым примером. 
6. Откорректируйте название вашего последовательного порта в makefile. 
Для Windows это будет com1, com2,…, для Linux /dev/ttyS0, /dev/ttyS1 и 
так далее. Если у вас один встроенный порт, то это скорее всего com1 
или /dev/ttyS0. 
7. Скомпилируйте тестовый проект. Для этого нужно в каталоге, в 
котором находится файл makefile, запустить команду make. 
8. Загрузите получившийся файл в учебный стенд. Для этого нужно 
выполнить команду make load. 
9. Если всё прошло нормально, вы увидите эмулятор терминала, 
запущенный в консоли вашего компьютера, а программа, загруженная в 
SDK-1.1, начнет исполняться. 
6.2 Программирование светодиодных индикаторов 
Светодиодные индикаторы (8 шт.) в стенде SDK-1.1 подключены не 
напрямую к микроконтроллеру ADuC812, а через расширитель портов, 
выполненный на базе ПЛИС. За связь со светодиодами в расширителе портов 
отвечает 8-разрядный регистр SV, который находится по адресу 080007h (на 8-й 
странице внешней памяти данных 7-я ячейка), значение после сброса 
00000000B, доступен только для записи (см. подраздел 4.4.3). 
Для доступа к регистрам ПЛИС нужно переключить страничный регистр 
DPP на 8 страницу памяти. Адреса регистров внутри страницы находятся в 
диапазоне от 0 до 7.
Доступ к регистрам возможен через указатель:
unsigned char xdata *regnum 
Необходимо помнить, что при переключении страниц становятся 
недоступными все данные, размещенные в странице 0 (т.е. переменные в 
программе объявленные с модификатором памяти xdata).
Для того, чтобы избежать проблем со страничным регистром DPP, нужно 
использовать специальные функции для доступа к ПЛИС, которые перед 


247 
началом работы с регистрами ПЛИС будут запоминать старое значение 
страничного регистра, а по окончании работы возвращать его обратно. 
Нужно следить, чтобы передаваемые в регистры ПЛИС значения 
хранились во внутренней памяти микроконтроллера (DATA, IDATA). 
Убедиться, что передаваемая информация не содержится во внешней памяти 
контроллера (XDATA), достаточно легко: так как для доступа к внешней 
памяти в микроконтроллерах семейства Intel MCS-51 используется регистр 
специального назначения DPTR, нужно просто просмотреть листинг 
программы и убедиться в том, что для доступа к переменным компилятор не 
использует DPTR. 
Пример программы: 
#include "aduc812.h" 
#define MAXBASE 0x8 // Номер страницы внешней памяти (xdata),
// куда отображаются регистры расширителя портов в/в. 
/*-------------------------------------------------------------------- 
write_max 
----------------------------------------------------------------------
Запись в нужный регистр ПЛИС ALTERA MAX3064(3128) 
Вход: regnum - адрес (номер) регистра 
val - записываемое значение 
Выход: нет 
Результат: нет 
Описание: Производится запись в регистр (порт) ПЛИС ALTERA MAX3064(3128)
путем переключения адресуемой страницы памяти на страницу, где
расположены (куда отображаются) порты ввода-вывода ПЛИС. 
--------------------------------------------------------------------*/ 
void write_max( unsigned char xdata *regnum, unsigned char val ) 

unsigned char oldDPP = DPP; 
DPP = MAXBASE; 
*regnum = val; 
DPP = oldDPP; 

/*-------------------------------------------------------------------- 
read_max 
----------------------------------------------------------------------
Чтение из нужного регистра ПЛИС ALTERA MAX3064(3128) 
Вход: regnum - адрес (номер) регистра 
Выход: нет 
Результат: прочитанное из регистра значение 
Описание: Чтение из порта ПЛИС ALTERA MAX3064(3128)
путем переключения адресуемой страницы памяти на страницу, где
расположены (куда отображаются) порты ввода-вывода ПЛИС 
Пример: 
--------------------------------------------------------------------*/ 
unsigned char read_max( unsigned char xdata *regnum ) 

unsigned char oldDPP=DPP; 
unsigned char val; 
DPP = MAXBASE; 


248 
val = *regnum; 
DPP = oldDPP; 
return val; 

/*-------------------------------------------------------------------- 
leds 
---------------------------------------------------------------------- 
Зажигание линейки светодиодов 
Вход: on - управление светодиодами. Каждый бит переменной отвечает за один
светодиод: 1 - зажигает, 0 гасит светодиод 
Выход: нет 
Результат: нет 
Описание: Производится доступ к регистру расширителя портов SV с помощью 
функции write_max. Состояние светодиодов хранится в регистре 
old_led. 
--------------------------------------------------------------------*/ 
void leds( unsigned char on ) 

write_max( SV, on );
old_led = on; 

/*-------------------------------------------------------------------- 
main 
--------------------------------------------------------------------*/ 
// Задержка на заданное количество мс 
void delay ( unsigned long ms ) 

volatile unsigned long i, j; 
for( j = 0; j < ms; j++ ) 

for( i = 0; i < 50; i++ ); 


void main( void ) 

int i; 
for( i = 0; i < 3; i++ ) 

leds( 0xFF ); delay( 100 ); 
leds( 0x00 ); delay( 100 ); 

led( 0, 1 ); delay( 300 ); 
led( 1, 1 ); delay( 300 ); 
led( 2, 1 ); delay( 300 ); 
led( 3, 1 ); delay( 300 ); 
led( 4, 1 ); delay( 300 ); 
led( 5, 1 ); delay( 300 ); 
led( 6, 1 ); delay( 300 ); 
led( 7, 1 ); delay( 300 ); 
delay( 1000 ); 
for( i = 0; i < 3; i++ ) 

leds( 0xFF ); delay( 100 ); 
leds( 0x00 ); delay( 100 ); 



249 
while( 1 ) 

leds( 0x55 ); delay( 500 ); 
leds( 0xAA ); delay( 500 ); 

}

Download 3,23 Mb.

Do'stlaringiz bilan baham:
1   ...   151   152   153   154   155   156   157   158   ...   179




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish