kuya, di po tuloy na compile... i looked at the library files (headers files), P1_0 talga...here, i'm posting the whole header file:Code: [Select]/*--------------------------------------------------------------------------AT89x051.HHeader file for the Atmel 89C1051U, 89C2051, 89C4051.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/#ifndef __AT89x051_H__#define __AT89x051_H__/*------------------------------------------------Byte Registers------------------------------------------------*/sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr P1 = 0x90;sfr SCON = 0x98;sfr SBUF = 0x99;sfr IE = 0xA8;sfr P3 = 0xB0;sfr IP = 0xB8;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;/*------------------------------------------------PCON Bit Values------------------------------------------------*/#define IDL_ 0x01#define STOP_ 0x02#define EWT_ 0x04#define EPFW_ 0x08#define WTR_ 0x10#define PFW_ 0x20#define POR_ 0x40#define SMOD_ 0x80/*------------------------------------------------TCON Bit Registers------------------------------------------------*/sbit IT0 = 0x88;sbit IE0 = 0x89;sbit IT1 = 0x8A;sbit IE1 = 0x8B;sbit TR0 = 0x8C;sbit TF0 = 0x8D;sbit TR1 = 0x8E;sbit TF1 = 0x8F;/*------------------------------------------------TMOD Bit Values------------------------------------------------*/#define T0_M0_ 0x01#define T0_M1_ 0x02#define T0_CT_ 0x04#define T0_GATE_ 0x08#define T1_M0_ 0x10#define T1_M1_ 0x20#define T1_CT_ 0x40#define T1_GATE_ 0x80#define T1_MASK_ 0xF0#define T0_MASK_ 0x0F/*------------------------------------------------P1 Bit Registers------------------------------------------------*/sbit P1_0 = 0x90;sbit P1_1 = 0x91;sbit P1_2 = 0x92;sbit P1_3 = 0x93;sbit P1_4 = 0x94;sbit P1_5 = 0x95;sbit P1_6 = 0x96;sbit P1_7 = 0x97;sbit AIN0 = 0x90; /* + Analog comparator input */sbit AIN1 = 0x91; /* - Analog comparator input *//*------------------------------------------------SCON Bit Registers------------------------------------------------*/sbit RI = 0x98;sbit TI = 0x99;sbit RB8 = 0x9A;sbit TB8 = 0x9B;sbit REN = 0x9C;sbit SM2 = 0x9D;sbit SM1 = 0x9E;sbit SM0 = 0x9F;/*------------------------------------------------IE Bit Registers------------------------------------------------*/sbit EX0 = 0xA8; /* 1=Enable External interrupt 0 */sbit ET0 = 0xA9; /* 1=Enable Timer 0 interrupt */sbit EX1 = 0xAA; /* 1=Enable External interrupt 1 */sbit ET1 = 0xAB; /* 1=Enable Timer 1 interrupt */sbit ES = 0xAC; /* 1=Enable Serial port interrupt */sbit ET2 = 0xAD; /* 1=Enable Timer 2 interrupt */sbit EA = 0xAF; /* 0=Disable all interrupts *//*------------------------------------------------P3 Bit Registers (Mnemonics & Ports)------------------------------------------------*/sbit P3_0 = 0xB0;sbit P3_1 = 0xB1;sbit P3_2 = 0xB2;sbit P3_3 = 0xB3;sbit P3_4 = 0xB4;sbit P3_5 = 0xB5;/* P3_6 Hardwired as AOUT */sbit P3_7 = 0xB7;sbit RXD = 0xB0; /* Serial data input */sbit TXD = 0xB1; /* Serial data output */sbit INT0 = 0xB2; /* External interrupt 0 */sbit INT1 = 0xB3; /* External interrupt 1 */sbit T0 = 0xB4; /* Timer 0 external input */sbit T1 = 0xB5; /* Timer 1 external input */sbit AOUT = 0xB6; /* Analog comparator output *//*------------------------------------------------IP Bit Registers------------------------------------------------*/sbit PX0 = 0xB8;sbit PT0 = 0xB9;sbit PX1 = 0xBA;sbit PT1 = 0xBB;sbit PS = 0xBC;/*------------------------------------------------PSW Bit Registers------------------------------------------------*/sbit P = 0xD0;sbit FL = 0xD1;sbit OV = 0xD2;sbit RS0 = 0xD3;sbit RS1 = 0xD4;sbit F0 = 0xD5;sbit AC = 0xD6;sbit CY = 0xD7;/*------------------------------------------------Interrupt Vectors:Interrupt Address = (Number * 8) + 3------------------------------------------------*/#define IE0_VECTOR 0 /* 0x03 External interrupt 0 */#define TF0_VECTOR 1 /* 0x0B Timer 0 */#define IE1_VECTOR 2 /* 0x13 External interrupt 1 */#define TF1_VECTOR 3 /* 0x1B Timer 1 */#define SIO_VECTOR 4 /* 0x23 Serial port */#endif
/*--------------------------------------------------------------------------AT89x051.HHeader file for the Atmel 89C1051U, 89C2051, 89C4051.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.--------------------------------------------------------------------------*/#ifndef __AT89x051_H__#define __AT89x051_H__/*------------------------------------------------Byte Registers------------------------------------------------*/sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr P1 = 0x90;sfr SCON = 0x98;sfr SBUF = 0x99;sfr IE = 0xA8;sfr P3 = 0xB0;sfr IP = 0xB8;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;/*------------------------------------------------PCON Bit Values------------------------------------------------*/#define IDL_ 0x01#define STOP_ 0x02#define EWT_ 0x04#define EPFW_ 0x08#define WTR_ 0x10#define PFW_ 0x20#define POR_ 0x40#define SMOD_ 0x80/*------------------------------------------------TCON Bit Registers------------------------------------------------*/sbit IT0 = 0x88;sbit IE0 = 0x89;sbit IT1 = 0x8A;sbit IE1 = 0x8B;sbit TR0 = 0x8C;sbit TF0 = 0x8D;sbit TR1 = 0x8E;sbit TF1 = 0x8F;/*------------------------------------------------TMOD Bit Values------------------------------------------------*/#define T0_M0_ 0x01#define T0_M1_ 0x02#define T0_CT_ 0x04#define T0_GATE_ 0x08#define T1_M0_ 0x10#define T1_M1_ 0x20#define T1_CT_ 0x40#define T1_GATE_ 0x80#define T1_MASK_ 0xF0#define T0_MASK_ 0x0F/*------------------------------------------------P1 Bit Registers------------------------------------------------*/sbit P1_0 = 0x90;sbit P1_1 = 0x91;sbit P1_2 = 0x92;sbit P1_3 = 0x93;sbit P1_4 = 0x94;sbit P1_5 = 0x95;sbit P1_6 = 0x96;sbit P1_7 = 0x97;sbit AIN0 = 0x90; /* + Analog comparator input */sbit AIN1 = 0x91; /* - Analog comparator input *//*------------------------------------------------SCON Bit Registers------------------------------------------------*/sbit RI = 0x98;sbit TI = 0x99;sbit RB8 = 0x9A;sbit TB8 = 0x9B;sbit REN = 0x9C;sbit SM2 = 0x9D;sbit SM1 = 0x9E;sbit SM0 = 0x9F;/*------------------------------------------------IE Bit Registers------------------------------------------------*/sbit EX0 = 0xA8; /* 1=Enable External interrupt 0 */sbit ET0 = 0xA9; /* 1=Enable Timer 0 interrupt */sbit EX1 = 0xAA; /* 1=Enable External interrupt 1 */sbit ET1 = 0xAB; /* 1=Enable Timer 1 interrupt */sbit ES = 0xAC; /* 1=Enable Serial port interrupt */sbit ET2 = 0xAD; /* 1=Enable Timer 2 interrupt */sbit EA = 0xAF; /* 0=Disable all interrupts *//*------------------------------------------------P3 Bit Registers (Mnemonics & Ports)------------------------------------------------*/sbit P3_0 = 0xB0;sbit P3_1 = 0xB1;sbit P3_2 = 0xB2;sbit P3_3 = 0xB3;sbit P3_4 = 0xB4;sbit P3_5 = 0xB5;/* P3_6 Hardwired as AOUT */sbit P3_7 = 0xB7;sbit RXD = 0xB0; /* Serial data input */sbit TXD = 0xB1; /* Serial data output */sbit INT0 = 0xB2; /* External interrupt 0 */sbit INT1 = 0xB3; /* External interrupt 1 */sbit T0 = 0xB4; /* Timer 0 external input */sbit T1 = 0xB5; /* Timer 1 external input */sbit AOUT = 0xB6; /* Analog comparator output *//*------------------------------------------------IP Bit Registers------------------------------------------------*/sbit PX0 = 0xB8;sbit PT0 = 0xB9;sbit PX1 = 0xBA;sbit PT1 = 0xBB;sbit PS = 0xBC;/*------------------------------------------------PSW Bit Registers------------------------------------------------*/sbit P = 0xD0;sbit FL = 0xD1;sbit OV = 0xD2;sbit RS0 = 0xD3;sbit RS1 = 0xD4;sbit F0 = 0xD5;sbit AC = 0xD6;sbit CY = 0xD7;/*------------------------------------------------Interrupt Vectors:Interrupt Address = (Number * 8) + 3------------------------------------------------*/#define IE0_VECTOR 0 /* 0x03 External interrupt 0 */#define TF0_VECTOR 1 /* 0x0B Timer 0 */#define IE1_VECTOR 2 /* 0x13 External interrupt 1 */#define TF1_VECTOR 3 /* 0x1B Timer 1 */#define SIO_VECTOR 4 /* 0x23 Serial port */#endif
......sis, panay ang error ng M-IDE ko... access violation daw. eto sampol:may special setup ka pa bang ginagawa?isa pa nga pala, yung header files di automatic yung paghanap ng IDE. instead ganito pa ang ginagawa ko: #include "C:\MIDE\sdcc\include\mcs51\at89x051.h"
oo sis... umaandara yun. RB0 ^= 1;timer naman... ewan ko lang kung sa proteus. pero eto yung calculation ko. sa 12Mhz, may 1us each increment. dun sa posted code code ko, 16-bits ang intented na timer. so 1us x 65536 = 65.536ms ang bawat overflow. therefore kailangan ko ng 15-16 overflows to make a 1 second... tama ba sis?so ganito ang ginawa ko...Code: [Select]#define OVERFLOW_1S 15while(1) { if(TF0) { TF0 = 0; overflows++; if (overflows >= OVERFLOW_1S) { overflows = 0; i++; if (i>=8) i = 0; P1 = MAP[i]; } } }pero yung outcome, mabilis pa din... weirdly(or talagang di pa ako sanay... hehehe) kung ilagay ko OVERFLOW_1S = 150, parang tamang tama yung bilis.......................noted sir... i am struggling last night to make my M-IDE work. it always give a "runtime error". ewan ko po ngayong nagrestart na ako...
#define OVERFLOW_1S 15while(1) { if(TF0) { TF0 = 0; overflows++; if (overflows >= OVERFLOW_1S) { overflows = 0; i++; if (i>=8) i = 0; P1 = MAP[i]; } } }
;------------------------interrupt service routine----------------------------------------- ORG TIMER0 PUSH ACC PUSH PSW CLR TR0 ; stop timer MOV TH0, #0FCh ; set interrupt to occur MOV TL0, #17h ; every 1 mSeconds SETB TR0 ; run timer DJNZ MILLISECONDS_LOW, EXIT_INT ; decrement MILLISECONDS_LOW and exit interrupt if MILLISECOND_LOW not zero MOV MILLISECONDS_LOW, #0FFh ; if MILLISECONDS_LOW is zero, reload register with #0FF DJNZ MILLISECONDS_HIGH, EXIT_INT ; decrement MILLISECONDS_HIGH and exit interrupt if MILLISECOND_HIGH not zero MOV MILLISECONDS_HIGH, #03h ; if MILLISECONDS_HIGH is zero, reload register with #03h MOV MILLISECONDS_LOW, #0E8h ; reload MILLISECONDS_LOW with #0E8h DJNZ SECONDS, EXIT_INT ; decrement SECONDS and exit interrupt if SECONDS not zero MOV SECONDS, #60 ; reload SECONDS with 60 DJNZ MINUTES, EXIT_INT ; decrement MINUTES and exit interrupt if MINUTES not zero MOV MINUTES, #60 ; reload MINUTES with 60 DJNZ HOURS, EXIT_INT ; decrement HOURS and exit interrupt if HOURS not zero MOV HOURS, #24 ; reload HOURS with 24 EXIT_INT: POP PSW POP ACC
^may nakita ako sa datasheet pero di ako sureideclare mo yung SFR sa main program mo or pwede ka ring gumawa ng sarili mong header filehow to declare SFR:sfr at 0xE8 EIE;sfr at 0x91 EXIF;sa mga bits naman:sbit at 0xE8 EX2;sbit at 0cE9 EX3;sbit at 0cEA EX4;sbit at 0cEB EX5;(pakiverify na lang kung tama) yung address ng special function register (SFR) is 0xE8... yung name ng SFR na naghahandle ng mga external interrupts 2 to 5 is EIE...yung EXIF naman na located sa 0x91, yun ata yung sa mga flags...yungEX2 nasa bit 0 ng EIEEX3 bit1EX3 bit2EX4 bit3EX5 bit4yung mga flags namanIE2 bit4 ng IXIFIE3 bit5IE4 bit6IE5 bit7kung di ako nagkakamali, same lang sila nung sa ex0 at ex1 sa pagaccess...