; Orange programmer module v2.6 ; (c) 2007 CnCLab ;CHIP=CR16,64K,cr16.hpl ;AREA=EEPROM,2176,0E800H ;AREA=FLASH1,48K,00000H,w ;AREA=FLASH2,16K,1C000H,w ;FREQ=4000 ;BAUD=19200 ;LOADER=OFF ; Hardware ISP-Mode pins: ENV0=0 and ENV1=1(optional) ; SOCKET=30 ;UART ;INFO="CR16" BUSI=RXD,0x100 BUSO=TXD,0x100 BUSO=BAUDRATE,0x101 BUSI=WRKBAUD,0x101 ;BUSO=DATABITS,0x102 BUSO=FIFO,0x106 BUSO=FLUSH,0x107 ;PINO=TXP,8 PINO=RESET,14 ; standard tx [_TX] R0=&0xFF R7=+R0 ;crc TXD=R0 [_SENDADR] R0=ADR,R0=+RC R0=/256,R0=/256 _TX ;HB R0=ADR,R0=+RC R0=/256 _TX ;MB R0=ADR,R0=+RC _TX ;LB [INIT] FLUSH=1 FIFO=3 ; RX+TX RESET=0 P=100000 RESET=1 P=200000 _TX(0x55) R1=RXD _TX(0x24) R1?0x31{ PRINT=S("MCU: CR16MCS9, ID:%02X",R1) RETURN } R1?0x30{ PRINT=S("MCU: CR16MHS9, ID:%02X",R1) RETURN } PRINT=A("Unknown ID:%02X\nContinue?",R1) RA?0{EXIT} [READ] R7=0 _TX(0x72) ;r _SENDADR _TX(R7) ; crc R1=RXD R1?!0x6{PRINT=S("?")} ;nack ;R1?0x6{PRINT=S(" ")} ;nack ok? R1=RXD DATA=R1 ;data [WRITE] R7=0 _TX(0x77) ;w _SENDADR R0=DATA,_TX _TX(R7) ; crc? R1=RXD R1?!0x6{PRINT=S("?")} ;nack ;R1?0x6{PRINT=S(" ")} ;nack ok? ;R1=RXD ;DATA=R1 ;data [_TEST] R7=0 ADR=0 PRINT=P(0,0x20000) LOOP(0x20000){ _TX(0x72) ;r _TX(0x0) ;HB _TX(0x12) ;MB _TX(R7) ;LB R0=R7,R0=/256 _TX ; crc? R1=RXD DATA=R1 ;nack ADR=+1 PRINT=P(R7) ; R1=RXD DATA=R1 ;data ADR=+1 P=200 R7=+1 FLUSH=1 }