[an error occurred while processing this directive]
ну как это нету !!! (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено O.L. 18 сентября 2003 г. 13:04
В ответ на: Не будет работать этот код, там когда дизасм смотришь, команды movx нету, т.к. она только для xdata указателя применяется отправлено Vlad77 18 сентября 2003 г. 11:59

вот:-
// Disable Watchdog timer
PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer
// enable)

// erase the FLASH page at 0x1000
EA = 0; // disable interrupts (precautionary)

// initialize write/erase pointer
pwrite = (unsigned char xdata *) 0x1000;
PSCTL = 0x03; // MOVX writes erase FLASH page

FLKEY = 0xA5; // FLASH lock and key sequence 1
FLKEY = 0xF1; // FLASH lock and key sequence 2
*pwrite = 0; // initiate page erase

PSCTL = 0; // MOVX writes target XRAM
EA = 1; // re-enable interrupts

получаем
//---------------------------------------------------------------
58: // Disable Watchdog timer
59: PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer
60: // enable)
61:
62: // erase the FLASH page at 0x1000
C:0x0003 53D9BF ANL PCA0MD(0xD9),#0xBF
63: EA = 0; // disable interrupts (precautionary)
64:
65: // initialize write/erase pointer
C:0x0006 C2AF CLR EA(0xA8.7)
66: pwrite = (unsigned char xdata *) 0x1000;
C:0x0008 7F00 MOV R7,#0x00
C:0x000A 7E10 MOV R6,#0x10
67: PSCTL = 0x03; // MOVX writes erase FLASH page
68:
C:0x000C 758F03 MOV PSCTL(0x8F),#0x03
69: FLKEY = 0xA5; // FLASH lock and key sequence 1
C:0x000F 75B7A5 MOV FLKEY(0xB7),#P1MDOUT(0xA5)
70: FLKEY = 0xF1; // FLASH lock and key sequence 2
C:0x0012 75B7F1 MOV FLKEY(0xB7),#P0MDIN(0xF1)
71: *pwrite = 0; // initiate page erase
72:
C:0x0015 8F82 MOV DPL(0x82),R7
C:0x0017 8E83 MOV DPH(0x83),R6
C:0x0019 E4 CLR A
C:0x001A F0 MOVX @DPTR,A
// -----------------
73: PSCTL = 0; // MOVX writes target XRAM
C:0x001B F58F MOV PSCTL(0x8F),A
74: EA = 1; // re-enable interrupts
75:
//---------------------------------------------------------------
и еще

while (*pread != '\0') { // copy until NULL is detected

FLKEY = 0xA5; // FLASH lock and key sequence 1
FLKEY = 0xF1; // FLASH lock and key sequence 2
*pwrite = *pread; // copy byte

pread++; // advance pointers
pwrite++;
}

//------------------------------------------------------------
84: while (*pread != '\0') { // copy until NULL is detected
85:
C:0x0028 8D82 MOV DPL(0x82),R5
C:0x002A 8C83 MOV DPH(0x83),R4
C:0x002C E4 CLR A
C:0x002D 93 MOVC A,@A+DPTR
C:0x002E 6017 JZ C:0047
86: FLKEY = 0xA5; // FLASH lock and key sequence 1
C:0x0030 75B7A5 MOV FLKEY(0xB7),#P1MDOUT(0xA5)
87: FLKEY = 0xF1; // FLASH lock and key sequence 2
C:0x0033 75B7F1 MOV FLKEY(0xB7),#P0MDIN(0xF1)
88: *pwrite = *pread; // copy byte
89:
C:0x0036 8F82 MOV DPL(0x82),R7
C:0x0038 8E83 MOV DPH(0x83),R6
C:0x003A F0 MOVX @DPTR,A
// -------------------
90: pread++; // advance pointers
C:0x003B 0D INC R5
C:0x003C BD0001 CJNE R5,#0x00,C:0040
C:0x003F 0C INC R4
91: pwrite++;
C:0x0040 0F INC R7
C:0x0041 BF0001 CJNE R7,#0x00,C:0045
C:0x0044 0E INC R6
92: }
93:
//------------------------------------------------------------

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru