Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Цифровые сигнальные процессоры (DSP) и их применение»

Спасибо. Там просто - вызов инициализаций и вечный цикл ВОТ ВСЕ ВМЕСТЕ:

Отправлено отстающий 17 августа 2007 г. 22:25
В ответ на: У вас три части программы заканчиваются RTS и RTI, это "возврат из...". Где основной программный цикл? отправлено <font color=gray>рл</font> 17 августа 2007 г. 16:52

#include
/*GLOBAL DECLARATIONS*/
.GLOBAL _main;
.GLOBAL Start;
/*Program memory code*/
.SECTION /pm program;
Start:
_main:
call Program_Timer_Interrupt;
/* Initialize Interrupt Priorities */
call General_Purpose_Intitialization;
/* Initialize General Purpose I/O */
call Timer_register_Initialization;
/* Initialize Timer0 */
wait_forever:
nop;
nop;
nop;
nop;
jump wait_forever;

====================================================================
/*INTERRUPT PRIORITY CONFIGURATION*/
.SECTION /pm program;
Program_Timer_Interrupt:
IOPG = 0;
ar=io(SYSCR); /* Map Interrupt Vector Table to Page 0*/
ar = setbit 4 of ar;
io(SYSCR)=ar;
DIS int; /* Disable all interrupts */
IRPTL = 0x0; /* Clear all interrupts */
ICNTL = 0x0; /* Interrupt nesting disable */
IMASK = 0; /* Mask all interrupts */
IOPG = Interrupt_Controller_Page;
ar = 0xBBB1; /* Assign Timer0 with priority of 1 */
io(IPR5) = ar;
ar = 0xBBBB; /* Assign remainder with lowest priority */
io(IPR0) = ar;
io(IPR1) = ar;
io(IPR3) = ar;
AY0=IMASK;
AY1=0x0020; /* Unmask Timer0 Interrupt */
AR = AY0 or AY1;
IMASK=AR;
RTS;
====================================================================

/*INITIALIZE GENERAL PURPOSE FLAGS*/
.SECTION /pm program;
General_Purpose_Intitialization:
IOPG = General_Purpose_IO;
AY0 = IO(DIRS);
AY0 = 0x000F; /* Configure FLAGS 0, 1, 2, and 3 as outputs */
AR = AY0 OR AY0;
IO(DIRS) = AR;
AX1 = 0x000F; /* Turn OFF FLAGS 0, 1, 2, and 3 */
IO(FLAGC) = AX1;
AX1 = 0x000F; /* Turn ON FLAGS 0, 1, 2, and 3 */
IO(FLAGS) = AX1;
RTS;
====================================================================

/*TIMER REGISTER INTIALIZATION*/
.SECTION /pm program;
Timer_register_Initialization:
IOPG = Timer_Page;
ax0 = 0x001D;
/* PWM_OUT mode, Positive Active Pulse, Count to end of */
IO(T_CFGR0) = ax0;
/* period ,Int Request Enable, Timer_pin select */
ax0 = 0x0262;
IO(T_PRDH0) = ax0;
/* Timer 0 Period register (high word) */
ax0 = 0x5A00;
IO(T_PRDL0) = ax0;
/* Timer 0 Period register (low word) */
ax0 = 0x0131;
IO(T_WHR0) = ax0;
/* Timer 0 Width register (high word) */
ax0 = 0x2D00;
IO(T_WLR0) = ax0;
/* Timer 0 Width register (low word) */
ax0 = 0x0100; /* Enable Timer0 */
IO(T_GSR0) = ax0;
ENA INT; /* Globally Enable Interrupts */
RTS;
====================================================================

#include
/* EXTERNAL DECLARATIONS*/
.EXTERN Start;
/* DM data */
.SECTION /dm data1;
.VAR counter_int5 = 0;
.VAR Timer__Flag_Polarity;
/* PM Reset interrupt vector code */
.section/pm IVreset;
jump Start;
nop; nop; nop;
/* Timer ISR*/
.section/pm IVint5;
ENA SR;
ay1 = IOPG;
IOPG = Timer_Page;
ax0 = 0x0001;
/* Clear Timer0 TIMIL0 */
IO(T_GSR0) = ax0;
ar = dm(counter_int5);
/* Interrupt counter */
ar = ar + 1;
dm(counter_int5) = ar;
Timer0_Interrupt_Handler:
AX0 = 0x000F;
AR = 0;
IOPG = General_Purpose_IO;
AX1 = DM(Timer__Flag_Polarity);
AR = TGLBIT 0x0 OF AX1;
/* Toggle Status flag */
if eq jump TURN_OFF;
/* Determine if GPIO was ON or OFF */
TURN_ON:
IO(FLAGS) = AX0;
/* Turn ON GPIOS 0, 1, 2, 3 */
DM(Timer__Flag_Polarity) = AR;
IOPG = ay1;
DIS SR;
RTI;
TURN_OFF:
IO(FLAGC) = AX0;
/* Turn OFF GPIOS 0, 1, 2, 3 */
DM(Timer__Flag_Polarity) = AR;
IOPG = ay1;
DIS SR;
RTI;




Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
что получится, если сложить 4 и 4 ?

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru