|
ADuC841, работа с XRAM, интересует возможность косвенной адресации после #FFh, ну или как выкр |
|
|
|
 |
Ответов
|
May 26 2008, 06:44
|
Частый гость
 
Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645

|
))чудес не бывает, а вот г... случается вот подпрограмка записи в уарт quart_wr: ; Подпрограмма записи во внешний UART ; R7 - address ; R6 - data; clr ea mov P0, r7 setb P3.3 nop clr P3.3 mov a, blic anl a, #10111111b ORL a, #10000000b mov blic, a mov p0, blic setb P3.4 nop clr P3.4 clr P3.2 mov P0, r6 setb P3.2 mov a, blic anl a, #10111111b ORL a, #11000000b mov blic, a mov p0, blic setb P3.4 nop clr P3.4 setb ea ret а вот обработчик прерывания от таймера what_time_is_it_now: nop nop clr ea CLR TF0 push PSW push ACC push DPP push DPL push DPH mov b_temp, b mov r0_temp, r0 mov r1_temp, r1 mov r2_temp, r2 mov r3_temp, r3 mov r4_temp, r4 mov r5_temp, r5 ;mov r6_temp, r6 ;mov r7_temp, r7 inc drive mov a, drive cjne a, #02h, no_drive_1 setb adc_conv no_drive_1: cjne a, #04h, no_drive_2 setb flag no_drive_2: cjne a, #06h, no_drive_3 setb hook no_drive_3: cjne a, #08h, no_drive_4 setb adc_conv1 mov drive, #0 no_drive_4: inc msCnt inc timer24 inc OU_COUNT inc T0ImpCnt mov a, T0ImpCnt cjne a, #04h, _160ms mov T0ImpCnt, #0 inc TH2 inc TL2 inc RCAP2L inc __160__ mov a, __160__ cjne a, #0A0h, _160ms mov __160__, #0 inc KDU1_SilenceCnt inc KDU2_SilenceCnt inc KDU3_SilenceCnt ;call time_out _160ms: ;_____________________________________________ ; ;Для интервала в 10ms\и других> ;_____________________________________________ ;*************************************чтение из внешнего уарта каждые 0.5 мс********************************************** MOV A, #01h cjne a, OU_COUNT, no_ouart setb time_to_read ;call tablo mov OU_COUNT, #00h no_ouart: ;******************************************************************************* ************************************************* MOV A, #0FAH cpl a add a, timer24 cpl a jnz nexX mov timer24, #0 inc msCnt_1 MOV A, #08h cpl a add a, msCnt_1 cpl a jnz nexX ;call lamp1 ;lcall lamp mov a, bit_mig cpl a anl a, #00000001b mov bit_mig, a mov msCnt_1, #0 ;*****************************************Таймер включения питания на ключах***************************************** nexX: ;MOV A, #07H ;cpl a ;add a, msCnt ;cpl a ;jnz next_ MOV A, #02h cjne a, msCnt, no_tablo ;call tablo mov msCnt, #00h no_tablo: ;call swich_on ;next_: ;MOV A, #09h ;cpl a ;add a, msCnt ;cpl a ;jnz no_ ;setb key ;no_: ;MOV A, #0AH ;cpl a ;add a, msCnt ;cpl a ;jnz exit_count ;mov msCnt, #00h ;call swich_off ;******************************************************************************* ************************************************* exit_count: pop PSW pop ACC pop DPP pop DPL pop DPH mov b, b_temp mov r0, r0_temp mov r1, r1_temp mov r2, r2_temp mov r3, r3_temp mov r4, r4_temp mov r5, r5_temp ;mov r6, r6_temp ;mov r7, r7_temp mov TH0, #0EAh mov TL0, #66h SETB TR0;<------------------------------------Restart setb ea reti между двух строк я просто вставлял код записи в уарт, для теста. Уарт - это внешняя микросхема (8 канальный). На другом блоке аналогичный код работает. Может я некорректно с ХRAMом работаю. Если что, вот аська 221542155 Если запретить прерывание - ошибки исчезают, но это грубое решение
Сообщение отредактировал novlev - May 26 2008, 07:08
|
|
|
|
|
May 26 2008, 09:30
|

Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276

|
Цитата(novlev @ May 26 2008, 10:44)  ))чудес не бывает, а вот г... случается кусь кусь а вот обработчик прерывания от таймера what_time_is_it_now: nop nop clr ea CLR TF0 push PSW push ACC push DPP push DPL push DPH >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ХРУМ pop PSW pop ACC pop DPP pop DPL pop DPH mov b, b_temp mov r0, r0_temp mov r1, r1_temp mov r2, r2_temp mov r3, r3_temp mov r4, r4_temp mov r5, r5_temp ;mov r6, r6_temp ;mov r7, r7_temp mov TH0, #0EAh mov TL0, #66h SETB TR0;<------------------------------------Restart setb ea reti между двух строк я просто вставлял код записи в уарт, для теста. Уарт - это внешняя микросхема (8 канальный). На другом блоке аналогичный код работает. Может я некорректно с ХRAMом работаю. Если что, вот аська 221542155 Если запретить прерывание - ошибки исчезают, но это грубое решение  А почему вы из стека восстанавливаете все задом на перед.??? Или это особенность Analog Devices ????
--------------------
Удачи.
|
|
|
|
Сообщений в этой теме
novlev ADuC841, работа с XRAM May 17 2008, 09:59 novlev Цитата(novlev @ May 17 2008, 12:59) День ... May 17 2008, 11:57 novlev ((((((((( нет, вру - не выкрутился. Ситуация следу... May 25 2008, 10:52 AndreyS Цитата(novlev @ May 25 2008, 14:52) (((((... May 26 2008, 06:38 novlev действительно, огромное спасибо, в спешке и не зам... May 26 2008, 09:54
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|