Advertisement
Francoo

RS232 LCD Terminal w/ EEPROM access

May 30th, 2013
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.51 KB | None | 0 0
  1. #include <main.h>
  2. #include <flex_lcd.c>
  3.  
  4. // Ad hoc programming, only for testing purpose (demo).
  5. // Needs to be revised before using.
  6.  
  7. #INT_EXT
  8. void external (){
  9.    delay_ms(50);
  10.    if ( ! input(PIN_B0) ){
  11.       printf("This is a message triggered by an external interrupt! ");
  12.    }
  13. }
  14.  
  15. void main (){
  16.    lcd_init();
  17.    setup_uart(9600);
  18.    port_b_pullups(true);
  19.    
  20.    int ctprint;
  21.    int ctcmd;
  22.    int ctbyte;
  23.    int posit = 1;
  24.    int eeptmp;
  25.    int eeadd;
  26.    short cline = 0;
  27.    
  28.    printf(lcd_putc, "Hello World!\nPress button.");
  29.    while( input(PIN_B0) );
  30.    lcd_gotoxy(1,1);
  31.    lcd_init();
  32.    lcd_gotoxy(0,1);
  33.    printf("Hello World! ");
  34.    delay_ms(100);
  35.    
  36.    enable_interrupts(GLOBAL);
  37.    enable_interrupts(INT_EXT);
  38.    ext_int_edge (H_TO_L);
  39.    
  40.    while(true){
  41.       ctprint=getc();
  42.       if ( ctprint == 0x09 ){
  43.          output_high(PIN_A0);
  44.          ctcmd=getc();
  45.             switch (ctcmd){
  46.                case 0x42:
  47.                case 0x62:
  48.                   output_high(PIN_A1);
  49.                   ctbyte=getc();
  50.                   lcd_send_byte(0,ctbyte);
  51.                   output_low(PIN_A1);
  52.                   break;
  53.                case 0x52:
  54.                case 0x72:
  55.                   lcd_init();
  56.                   posit = 1;
  57.                   cline = 0;
  58.                   break;
  59.                case 0x45:
  60.                case 0x65:
  61.                   output_high(PIN_A2);
  62.                   eeadd=getc();
  63.                   eeptmp=read_eeprom(eeadd);
  64.                   printf("%c", eeptmp);
  65.                   output_low(PIN_A2);
  66.                   break;
  67.                case 0x57:
  68.                case 0x77:
  69.                   output_high(PIN_A2);
  70.                   output_high(PIN_A1);
  71.                   eeadd=getc();
  72.                   output_low(PIN_A0);
  73.                   ctbyte=getc();
  74.                   write_eeprom(eeadd,ctbyte);
  75.                   delay_ms(8);
  76.                   output_low(PIN_A1);
  77.                   output_low(PIN_A2);
  78.                   break;
  79.                case 0x43:
  80.                case 0x63:
  81.                   output_low(PIN_A0);
  82.                   output_high(PIN_A2);
  83.                   int i;
  84.                   for(i=0;i<128;i++){
  85.                      write_eeprom(i,0xFF);
  86.                   }
  87.                   output_low(PIN_A2);
  88.                   break;
  89.                case 0x46:
  90.                case 0x66:
  91.                   output_low(PIN_A0);
  92.                   output_high(PIN_A2);
  93.                   for( i=0;i<127;i++ ){
  94.                      eeptmp=read_eeprom(i);
  95.                      printf("%c", eeptmp);
  96.                   }
  97.                   output_low(PIN_A2);
  98.                   break;
  99.                case 0x09:
  100.                break;
  101.             }
  102.          output_low(PIN_A0);
  103.       }
  104.       else if ( !( posit == 16 && cline == 1 ) && posit != 17 && ctprint != 0x08 && ctprint != 0x0A ){
  105.          lcd_putc(ctprint);
  106.          posit++;
  107.       }
  108.       else if ( !( posit == 1 && cline == 0 ) && ctprint == 0x08 ){
  109.          lcd_putc(0x08);
  110.          lcd_putc(0x20);
  111.          lcd_putc(0x08);
  112.          posit--;
  113.          if ( posit == 0 ){
  114.             lcd_gotoxy(17,1);
  115.             posit=17;
  116.             cline=0;
  117.          }
  118.       }
  119.       else if ( posit == 17 && cline == 0 && ctprint != 0x0A ){
  120.          lcd_gotoxy(1,0);
  121.          cline=1;
  122.          lcd_putc(ctprint);
  123.          posit=1;
  124.       }
  125.       else if ( ctprint == 0x0A && cline == 0 ){
  126.          lcd_putc(ctprint);
  127.          posit=1;
  128.          cline=1;
  129.       }
  130.    }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement