реклама на сайте
подробности

 
 
> ADuC841, работа с XRAM, интересует возможность косвенной адресации после #FFh, ну или как выкр
novlev
сообщение May 17 2008, 09:59
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



День добрый, использую XRAM, но возникла проблема - после адреса #00FFh как работать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
novlev
сообщение May 26 2008, 06:44
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 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


Если запретить прерывание - ошибки исчезают, но это грубое решениеsad.gif

Сообщение отредактировал novlev - May 26 2008, 07:08
Go to the top of the page
 
+Quote Post
AndreyS
сообщение May 26 2008, 09:30
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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
Если запретить прерывание - ошибки исчезают, но это грубое решениеsad.gif


А почему вы из стека восстанавливаете все задом на перед.??? Или это особенность Analog Devices ????


--------------------
Удачи.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 17:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016