OSDN Git Service

[BUG] Replace __18FxxKyy to pic18fxxkyy , __18FxxKyy is not decleared from sdcc.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 12 Jun 2013 12:22:38 +0000 (21:22 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 12 Jun 2013 12:22:38 +0000 (21:22 +0900)
i2c_io.c
iodef.h
lcd_acm1602.c
lcd_acm1602.h
main.c
ui.c

index 651b8f1..991797a 100644 (file)
--- a/i2c_io.c
+++ b/i2c_io.c
@@ -49,7 +49,8 @@ void i2c2_init(void)
     SSP2CON1 = b;
 
 }
-#elif defined(_I2C_IO_ONE_MSSP)
+#else
+ #ifdef _I2C_IO_ONE_MSSP
 void i2c1_init(void)
 {
     unsigned char b;
@@ -63,11 +64,12 @@ void i2c2_init(void)
     i2c1_init();
 }
 
-#else // None MSSP, Software I2C
+ #else // None MSSP, Software I2C
 void i2c1_init(void)
 {
 }
 void i2c2_init(void)
 {
 }
-#endif
+ #endif
+#endif
\ No newline at end of file
diff --git a/iodef.h b/iodef.h
index b5ab19e..167ac3a 100644 (file)
--- a/iodef.h
+++ b/iodef.h
@@ -36,17 +36,17 @@ extern "C" {
 /*
  * Machine depended flags
  */
-#if defined(__18F23K22) || defined(__18F24K22) || defined(__18F25K22) || defined(__18F26K22)
+#if defined(pic18f23k22) || defined(pic18f24k22) || defined(pic18f25k22) || defined(pic18f26k22)
 #define _I2C_IO_TWO_MSSPS
 #define _PIO_HAS_THREE
 #endif
 
-#if defined(__18F23K20) || defined(__18F24K20) || defined(__18F25K20) || defined(__18F26K20)
+#if defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20)
 #define _I2C_IO_ONE_MSSP
 #define _PIO_HAS_THREE
 #endif
 
-#if defined(__18F43K20) || defined(__18F44K20) || defined(__18F45K20) || defined(__18F46K20)
+#if defined(pic18f43k20) || defined(pic18f44k20) || defined(pic18f45k20) || defined(pic18f46k20)
 #define _I2C_IO_ONE_MSSP
 #define _PIO_HAS_FIVE
 #endif
index 3c8172b..7eac6ca 100644 (file)
@@ -38,16 +38,12 @@ static void sendcmd(unsigned char addr, unsigned char cmd)
     i2c_writechar(0x00);
     i2c_writechar(cmd);
     CLOSEASMASTER();
-    delay1ktcy(1); // 0.1ms
-}
-
-static void delay_lcd(void)
-{
-    _ACM1602_LONG_WAIT(); // Wait 0.1ms
+    _ACM1602_I2C_WAIT(); // 0.2ms
 }
 
 static void acm1602_ioinit(unsigned char addr)
 {
+    _ACM1602_LONG_LONG_WAIT();
     return;
 }
 
@@ -59,19 +55,30 @@ void acm1602_putchar(unsigned char addr, unsigned char c)
     i2c_writechar(0x80); //Data
     i2c_writechar(c); // Putchar
     CLOSEASMASTER();
-    _ACM1602_SHORT_WAIT(); // Wait 0.1ms
+    _ACM1602_SHORT_WAIT(); // Wait 50us
 }
 
 #else // Parallel
-
-static void delay_lcd(void)
+static void sendcmd(unsigned char addr, unsigned char cmd)
 {
-    _ACM1602_LONG_WAIT();
+    unsigned char b;
+    b = _LCDPORT_CONT;
+    b &= ~(_LCDPORT_CONT_RS | _LCDPORT_CONT_RW); // RS='0',RW='0'
+    _LCDPORT_CONT_LATCH = b;
+    _LCDPORT_LATCH_DATA = cmd;
+    b |= _LCDPORT_CONT_EN; // Send CMD
+    _LCDPORT_CONT_LATCH = b;
+    _ACM1602_TC_WAIT(); // Wait 2.5?us
+    b &= ~_LCDPORT_CONT_EN; // Disable EN
+    _LCDPORT_CONT_LATCH = b;
+    // End of Command.
 }
 
 static void acm1602_ioinit(unsigned char addr)
 {
     unsigned char b;
+
+    _ACM1602_LONG_LONG_WAIT();
     b = _LCDPORT_TRIS_CONT;
     b &= ~(_LCDPORT_CONT_RS | _LCDPORT_CONT_RW | _LCDPORT_CONT_EN);
     _LCDPORT_TRIS_CONT = b; // Clear Tristate bits, output.
@@ -82,21 +89,6 @@ static void acm1602_ioinit(unsigned char addr)
     _LCDPORT_LATCH_DATA = 0x00;
 }
 
-static void sendcmd(unsigned char addr, unsigned char cmd)
-{
-    unsigned char b;
-    b = _LCDPORT_CONT;
-    b &= ~(_LCDPORT_CONT_RS | _LCDPORT_CONT_RW); // RS='0',RW='0'
-    _LCDPORT_CONT_LATCH = b;
-    _LCDPORT_LATCH_DATA = cmd;
-    b |= _LCDPORT_CONT_EN; // Send CMD
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-    b &= ~_LCDPORT_CONT_EN; // Disable EN
-    _LCDPORT_CONT_LATCH = b;
-    // End of Command.
-}
-
 void acm1602_putchar(unsigned char addr, unsigned char c)
 {
     unsigned char b;
@@ -118,7 +110,7 @@ void acm1602_putchar(unsigned char addr, unsigned char c)
 void acm1602_cls(unsigned char addr)
 {
     sendcmd(addr, 0x01);
-    delay_lcd();
+    _ACM1602_LONG_WAIT(); // Wait 5ms
 }
 
 void acm1602_locate(unsigned char addr, char x, char y)
@@ -137,7 +129,7 @@ void acm1602_locate(unsigned char addr, char x, char y)
 void acm1602_home(unsigned char addr)
 {
     sendcmd(addr, 0x02);
-    delay_lcd();
+    _ACM1602_LONG_WAIT(); // Wait 5ms
 }
 
 void acm1602_printf(unsigned char addr, const char *fmt, ...)
@@ -172,10 +164,16 @@ void acm1602_init(unsigned char addr, unsigned char cls)
 {
     acm1602_ioinit(addr);
     sendcmd(addr, 0x38); // 2lines, 8x10dot fonts.
+    _ACM1602_SHORT_WAIT();
+    sendcmd(addr, 0x38); // 2lines, 8x10dot fonts.
+    _ACM1602_SHORT_WAIT();
     sendcmd(addr, 0x0f); // Display ON.
+    _ACM1602_SHORT_WAIT();
     if(cls == 0){
         acm1602_home(addr);
     } else {
         acm1602_cls(addr);
     }
+    sendcmd(addr, 0b00000110); // Cursor increment,not shift.
+    _ACM1602_SHORT_WAIT();
 }
\ No newline at end of file
index 4d06e5e..4ecc6bd 100644 (file)
@@ -48,6 +48,10 @@ extern "C" {
 #define _ACM1602_SHORT_WAIT()     delay100tcy(4)
 // Wait 5ms
 #define _ACM1602_LONG_WAIT()     delay1ktcy(40)
+// Wait 50ms
+#define _ACM1602_LONG_LONG_WAIT()     delay10ktcy(40)
+// Wait 0.2ms
+#define _ACM1602_I2C_WAIT()     delay100tcy(16)
 
 void acm1602_cls(unsigned char addr);
 void acm1602_putchar(unsigned char addr, unsigned char c);
diff --git a/main.c b/main.c
index 834e5c2..d66754f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -45,7 +45,7 @@
 /*
  * Config words.
  */
-#if defined(__18F23K22) || defined(__18F24K22) || defined(__18F25K22) || defined(__18F26K22)
+#if defined(pic18f23k22) || defined(pic18f24k22) || defined(pic18f25k22) || defined(pic18f26k22)
 #pragma stack 0x200 256 // Set stack size to 256bytes.
 #pragma config FOSC=INTIO67,BORV=190,BOREN=ON,PWRTEN=ON
 #pragma config WDTEN=ON,WDTPS=32768
 #pragma config EBTR0=OFF,EBTR1=OFF,EBTRB=OFF
 #endif
 // For 4xK20 or 2xK20 Series
-#if defined(__18F43K20) || defined(__18F44K20) || defined(__18F45K20) || defined(__18F46K20) || \
-    defined(__18F23K20) || defined(__18F24K20) || defined(__18F25K20) || defined(__18F26K20)
+#if defined(pic18f43k20) || defined(pic18f44k20) || defined(pic18f45k20) || defined(pic18f46k20) || \
+    defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20)
 #pragma stack 0x200 256
 #pragma config FOSC=INTIO67,FCMEN=ON,PWRT=ON,BOREN=ON,BORV=22
 #pragma config WDTEN=ON,WDTPS=32768,PBADEN=OFF,LPT1OSC=ON,MCLRE=ON
-#pragma config STRVEN=ON,DEBUG=ON
+#pragma config STVREN=ON,DEBUG=ON
 #pragma config CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF
 #pragma config CPB=OFF,CPD=OFF
 #pragma config WRT0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF
 #pragma config WRTC=OFF,WRTB=OFF,WRTD=OFF
-#pragma config EBTR0=OFF,EBTR1=OFFEBTR2=OFF,EBTR3=OFF,EBTRB=OFF
-#else // Another words.
-
+#pragma config EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF
 #endif
 
 
diff --git a/ui.c b/ui.c
index 12a3567..766fedc 100644 (file)
--- a/ui.c
+++ b/ui.c
@@ -49,8 +49,7 @@ void keyin_init(void)
     keyin_counter = 0;
 
 }
-
-#if defined(__18F23K22) || defined(__18F24K22) || defined(__18F25K22) || defined(__18F26K22)
+#if defined(pic18f23k22) || defined(pic18f24k22) || defined(pic18f25k22) || defined(pic18f26k22)
 /*
  * For 28Pin PIC(18F2xK22), I2C lcd using.
  */
@@ -73,7 +72,9 @@ void keyin_ioinit(void)
     ANSELC = AN_C_VAL;
     TRISC = TRIS_C_VAL_O;
 }
-#elif defined(__18F23K20) || defined(__18F24K20) || defined(__18F25K20) || defined(__18F26K20)
+#endif
+
+#if defined(pic18f23k20) || defined(pic18f24k20) || defined(pic18f25k20) || defined(pic18f26k20)
 /*
  * For 28Pin PIC(18F2xK20), I2C lcd using.
  */
@@ -95,9 +96,9 @@ void keyin_ioinit(void)
     LATC = 0x00;
     TRISC = TRIS_C_VAL_O;
 }
+#endif
 
-
-#elif defined(__18F43K20) || defined(__18F44K20) || defined(__18F45K20) || defined(__18F46K20)
+#if defined(pic18f43k20) || defined(pic18f44k20) || defined(pic18f45k20) || defined(pic18f46k20)
 /*
  * For 40Pin PIC(18F4xK20), paralell or I2C lcd using.
  */