Странное поведение "Кайла" для 51-х типа 8:15 Пользовал до событий типа 8:09, работало.
Скачал демо 8:15, поставил. Скушал лекарство под торговой маркой "EDGE".
Вроде подлечился. Тут просят константу одну поправить. Ну поменял, прошился,
не пашет, да и WDT (внешний) все время срабатывает. Стал разбираться и нашел такую вот глюковину.
Короче, порты в xdata в итоге снесены на адрес 0x0000. Интересно, это особенности применения лекарств,
или "по жизни так"?
Собственно исходный текст:
xdata volatile unsigned char WR_0 _at_ 0x8000; // порт вывода DD4
xdata volatile unsigned char WR_1 _at_ 0x8200; // порт вывода DD19
xdata volatile unsigned char WR_2 _at_ 0x8400; // порт вывода DD14
xdata volatile unsigned char WR_3 _at_ 0x8600; // порт вывода DD17
#pragma disable
void Out_Xport()
{
WR_0 = pWR0;
WR_1 = pWR1;
WR_2 = pWR2;
WR_3 = pWR3;
}
Выдержка из листинга:
; FUNCTION Out_Xport (BEGIN)
SETB C
R JBC EA,?C0030
CLR C
?C0030:
PUSH PSW
; SOURCE LINE # 72
; SOURCE LINE # 73
; SOURCE LINE # 74
MOV DPTR,#WR_0
R MOV A,pWR0
MOVX @DPTR,A
; SOURCE LINE # 75
MOV DPTR,#WR_1
R MOV A,pWR1
MOVX @DPTR,A
; SOURCE LINE # 76
MOV DPTR,#WR_2
R MOV A,pWR2
MOVX @DPTR,A
; SOURCE LINE # 77
MOV DPTR,#WR_3
R MOV A,pWR3
MOVX @DPTR,A
; SOURCE LINE # 78
POP PSW
MOV EA,C
RET
; FUNCTION Out_Xport (END)
Кусок из родного "Disassembly window", вместо переменных WR_ забиты #C_STARTUP(0x0000):
C:0x0187 10AF01 JBC EA(0xA8.7),C:018B
C:0x018A C3 CLR C
C:0x018B C0D0 PUSH PSW(0xD0)
72: void Out_Xport()
73: {
74: WR_0 = pWR0;
C:0x018D 900000 MOV DPTR,#C_STARTUP(0x0000)
C:0x0190 E522 MOV A,pWR0(0x22)
C:0x0192 F0 MOVX @DPTR,A
75: WR_1 = pWR1;
C:0x0193 900000 MOV DPTR,#C_STARTUP(0x0000)
C:0x0196 E520 MOV A,pWR1(0x20)
C:0x0198 F0 MOVX @DPTR,A
76: WR_2 = pWR2;
C:0x0199 900000 MOV DPTR,#C_STARTUP(0x0000)
C:0x019C E521 MOV A,pWR2(0x21)
C:0x019E F0 MOVX @DPTR,A
77: WR_3 = pWR3;
C:0x019F 900000 MOV DPTR,#C_STARTUP(0x0000)
C:0x01A2 E523 MOV A,pWR3(0x23)
C:0x01A4 F0 MOVX @DPTR,A
78: }
C:0x01A5 D0D0 POP PSW(0xD0)
C:0x01A7 92AF MOV EA(0xA8.7),C
C:0x01A9 22 RET
-
- Какой-то баг с _at_ исправили в недавно вышедшей v8.16a, генерилка здесь точно непричем. sqrt(256 знак., 29.08.2008 22:59)
- Проверил, поправили. - Chum_A(01.09.2008 10:30)
- Хм. мои проекты даже не заметили переход на новую версию. - POV(29.08.2008 14:15)
- Какой-то баг с _at_ исправили в недавно вышедшей v8.16a, генерилка здесь точно непричем. sqrt(256 знак., 29.08.2008 22:59)