Aduc841 301ns @20Mhz
같은 코드로 측정시 AVR (316ns)과 비교 해서 300ns이므로 AVR에 비해 코드 효율이 좀 떨어지는것 같다. 하지만 기존 8051에 비해서는 상당한 속도향상을 보이고 있다. AVR속도 측정 참고
Standard 8051(11.0592Mhz) P1 On/Off 출력. (4.3us)
Atmega128(16Mhz) PB On/Off 출력. (316ns)
Aduc841 301ns @20Mhz
Standard 8051(11.0592Mhz) P1 On/Off 출력. (4.3us)
Atmega128(16Mhz) PB On/Off 출력. (316ns)
#include <stdio.h> #include <ADuC841.h> sbit LED = 0x0B4; void main (void) { unsigned code values[64][2]={ {0x07, 0xFF},{0x08, 0xC8},{0x09, 0x8E},{0x0A, 0x51},{0x0B, 0x0F}, {0x0B, 0xC4},{0x0C, 0x71},{0x0D, 0x12},{0x0D, 0xA7},{0x0E, 0x2E}, {0x0E, 0xA5},{0x0F, 0x0D},{0x0F, 0x63},{0x0F, 0xA6},{0x0F, 0xD7}, {0x0F, 0xF5},{0x0F, 0xFF},{0x0F, 0xF5},{0x0F, 0xD7},{0x0F, 0xA6}, {0x0F, 0x63},{0x0F, 0x0D},{0x0E, 0xA5},{0x0E, 0x2E},{0x0D, 0xA7}, {0x0D, 0x12},{0x0C, 0x71},{0x0B, 0xC4},{0x0B, 0x0F},{0x0A, 0x51}, {0x09, 0x8E},{0x08, 0xC8},{0x07, 0xFF},{0x07, 0x36},{0x06, 0x70}, {0x05, 0xAD},{0x04, 0xEF},{0x04, 0x3A},{0x03, 0x8D},{0x02, 0xEC}, {0x02, 0x57},{0x01, 0xD0},{0x01, 0x59},{0x00, 0xF1},{0x00, 0x9B}, {0x00, 0x58},{0x00, 0x27},{0x00, 0x09},{0x00, 0x00},{0x00, 0x09}, {0x00, 0x27},{0x00, 0x58},{0x00, 0x9B},{0x00, 0xF1},{0x01, 0x59}, {0x01, 0xD0},{0x02, 0x57},{0x02, 0xEC},{0x03, 0x8D},{0x04, 0x3A}, {0x04, 0xEF},{0x05, 0xAD},{0x06, 0x70},{0x07, 0x36}}; DACCON = 0x0D; //DAC0 on 12-bit Asynchronous DAC0H = 0x08; //DAC0 mid scale DAC0L = 0x00; while (1) { int i; for ( i = 0 ; i < 64; i++) { DAC0H = values[i][0]; DAC0L = values[i][1]; } LED ^= 1; } } |
P3에 연결된 LED를 Flash하는 프로그램을 작성해 보았는데 예전 Aduc812(8051)에 사용 했던 코드에서 조금 수정했다.
역시 20MIPS의 속도가 장난이 아니다. Delay부분에서 예전 소스의 20배 느리게 했는데 오히려 더 빠른것 같다.
수치적으로 봐도 예전 8051은 1Mips정도 이지만 Aduc841은 20Mips니까...
//====================================================================== // // ADUC8xx EVM Test Program // // Author : nexp76(http://cafe.naver.com/elab) // Date : [2003.10.08] // File : dio1.c // //====================================================================== // Description // - PORT Flash Test // //======================================================================
#include <stdio.h> #include "../ADuC841.h"
void Delay(unsigned int MilliSec);
void main(void) { // LED ON // Loop forever for(;;) { P3 ^= 0xFF; P1 ^= 0xFF;
Delay(300); } }
// Delay routine #define MILISEC_TICK (115*20) void Delay(unsigned int MilliSec) { unsigned int tick;
while(MilliSec--) for (tick = 0; tick <MILISEC_TICK; tick++); } |
다운로드
컴파일 완료 후 보드에 다운로드 하는 툴은 아날로그 디바이스에서 제공하는 WSD를 사용하면 된다.
링크가 깨졌다면 직접 다운로드
댓글을 달아 주세요