Откомпилировал. Получилось что на С программа занимает значительно меньше, чем заявлено.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Дисбалансер 02 июля 2003 г. 13:16
В ответ на: Bill-у и другим, то интересовался сравнением кода на АСМ и кода на С(+) отправлено L.A. 02 июля 2003 г. 10:03


#include

__CONFIG(UNPROTECT & WDTEN & BORDIS & HS & MCLRIO & PWRTEN & LVPDIS);

#define OUT1 RA1
#define OUT2 RA2
#define BELL RB7;
#define RTIF T0IF;

persistent unsigned char TEMP1, CNT3, CNT1;

const unsigned char TABL1[248]={0x7e,0x81,0x84,0x87,0x8a,
0x8d,0x90,0x93,0x96,0x9a,0x9d,0xa0,0xa3,
0xa6,0xa9,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,
0xbf,0xc2,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,
0xd5,0xd7,0xda,0xdc,0xde,0xe0,0xe1,0xe3,0xe5,
0xe7,0xe8,0xea,0xeb,0xed,0xee,0xef,0xf1,0xf2,
0xf3,0xf4,0xf5,0xf6,0xf6,0xf7,0xf8,0xf8,0xf9,
0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
0xf9,0xf8,0xf8,0xf7,0xf6,0xf6,0xf5,0xf4,0xf3,
0xf2,0xf1,0xef,0xee,0xed,0xeb,0xea,0xe8,0xe7,
0xe5,0xe3,0xe1,0xe0,0xde,0xdc,0xda,0xd7,0xd5,
0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc2,0xbf,
0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa9,0xa6,
0xa3,0xa0,0x9d,0x9a,0x96,0x93,0x90,0x8d,0x8a,
0x87,0x84,0x81,0x7e,0x7a,0x77,0x74,0x71,0x6e,
0x6b,0x68,0x65,0x61,0x5e,0x5b,0x58,0x55,0x52,
0x50,0x4d,0x4a,0x47,0x44,0x41,0x3f,0x3c,0x39,
0x37,0x34,0x32,0x2f,0x2d,0x2a,0x28,0x26,0x24,
0x21,0x1f,0x1d,0x1b,0x1a,0x18,0x16,0x14,0x13,
0x11,0x10,0x0e,0x0d,0x0c,0x0a,0x09,0x08,0x07,
0x06,0x05,0x05,0x04,0x03,0x03,0x02,0x02,0x02,
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,
0x03,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0a,
0x0c,0x0d,0x0e,0x10,0x11,0x13,0x14,0x16,0x18,
0x1a,0x1b,0x1d,0x1f,0x21,0x24,0x26,0x28,0x2a,
0x2d,0x2f,0x32,0x34,0x37,0x39,0x3c,0x3f,0x41,
0x44,0x47,0x4a,0x4d,0x50,0x52,0x55,0x58,0x5b,
0x5e,0x61,0x65,0x68,0x6b,0x6e,0x71,0x74,0x77,
0x7a};

DELAY_1(void)
{
TMR0 = 70;
do {
CLRWDT();
} while(TMR0<128);
}

main(void)
{
CMCON = 0b00110111; // Отключение компараторов ;
PIR1 = 0x00;
TMR0 = 0x00; // Очистка рег-ра прерываний от периферии;
CLRWDT();

TRISA = 0b11100000; // Конфигурация PORTA ;
TRISB = 0b00000000; // Конфигурация PORTB ;
OPTION = 0b11000000; // Предварит. делитель на входе TMR0 1:2;
VRCON = 0x00;
PR2 = 128; //155;

T1CON = 0b00010101;
T2CON = 0b00000100;
CCP1CON = 0b00011111;
FSR = 0X28;
INTCON = 0x00;

CNT1=0;

for(;;) {
DELAY_1();
CNT1++;
if (CNT1>247) CNT1=0;
OUT2=1;
TEMP1=TABL1[CNT1];
CCPR1L= (TEMP1>>1) & 0x7F;
CCP1CON = 0xCF;
if ( TEMP1 & 0x80) CCP1Y = 1;
FSR++;
if (FSR>0x5F) FSR=0x28;
OUT2=0;
}
}

Deleting intermediary files... done.
Executing: D:\HT-PIC\BIN\PICC.EXE -Q -MPLAB -C -E628.cce -16F628 628.C -O628.obj -Zg9 -O -X -G
Executing: D:\HT-PIC\BIN\PICC.EXE -Q -MPLAB -E628.lde -16F628 D:\TEMP\628.OBJ -M628.MAP -PSECTMAP -FAKELOCAL -O628.hex

Psect Usage Map:

Psect | Contents | Memory Range
---------|-----------------------------|--------------------
powerup | Power on reset code | $0000 - $0003
end_init | Initialization code | $0004 - $0005
const | Strings and constant data | $0006 - $00FE
text | Program and library code | $07BE - $07C7
text1 | Program and library code | $07C8 - $07FF
nvram | Persistent RAM data | $0020 - $0022
config | User-programmed CONFIG bits | $2007 - $2007

Memory Usage Map:

Program ROM $0000 - $00FE $00FF ( 255) words
Program ROM $07BE - $07FF $0042 ( 66) words
$0141 ( 321) words total Program ROM

Bank 0 RAM $0020 - $0022 $0003 ( 3) bytes total Bank 0 RAM
Config Data $2007 - $2007 $0001 ( 1) words total Config Data


Program statistics:

Total ROM used 321 words (15.7%)
Total RAM used 3 bytes (1.3%)

Loaded D:\TEMP\628.hex
BUILD SUCCEEDED

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

Ответы



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

E-mail: info@telesys.ru