Browse Source

Initial commit to personal-uni.git

master
Sam Black 11 years ago
commit
8735bab98f
100 changed files with 22553 additions and 0 deletions
  1. BIN
      ee2a/lab1/circuit_diagram.png
  2. +2638
    -0
      ee2a/lab1/circuit_diagram.svg
  3. +71
    -0
      ee2a/lab2/counter_FSM.PLD
  4. +68
    -0
      ee2a/lab2/counter_FSM.si
  5. +92
    -0
      ee2a/lab3/stepper_motor.c
  6. +72
    -0
      ee2a/lab3/stepper_motor_full.c
  7. +123
    -0
      ee2a/lab3/stepper_motor_half.c
  8. +140
    -0
      ee2a/lab4/4bit/LCD_4BIT.H
  9. +107
    -0
      ee2a/lab4/4bit/lcd_display.BAK
  10. +38
    -0
      ee2a/lab4/4bit/lcd_display.PJT
  11. BIN
      ee2a/lab4/4bit/lcd_display.cof
  12. +1073
    -0
      ee2a/lab4/4bit/lcd_display.cof.txt
  13. +2
    -0
      ee2a/lab4/4bit/lcd_display.err
  14. +59
    -0
      ee2a/lab4/4bit/lcd_display.hex
  15. +1153
    -0
      ee2a/lab4/4bit/lcd_display.lst
  16. +145
    -0
      ee2a/lab4/4bit/lcd_display.scp
  17. +40
    -0
      ee2a/lab4/4bit/lcd_display.sta
  18. +70
    -0
      ee2a/lab4/4bit/lcd_display.sym
  19. +292
    -0
      ee2a/lab4/4bit/lcd_display.tre
  20. +38
    -0
      ee2a/lab4/4bit/lcd_display_4bit.PJT
  21. +81
    -0
      ee2a/lab4/4bit/lcd_display_4bit.c
  22. BIN
      ee2a/lab4/4bit/lcd_display_4bit.cof
  23. +2
    -0
      ee2a/lab4/4bit/lcd_display_4bit.err
  24. +59
    -0
      ee2a/lab4/4bit/lcd_display_4bit.hex
  25. +1135
    -0
      ee2a/lab4/4bit/lcd_display_4bit.lst
  26. +145
    -0
      ee2a/lab4/4bit/lcd_display_4bit.scp
  27. +40
    -0
      ee2a/lab4/4bit/lcd_display_4bit.sta
  28. +70
    -0
      ee2a/lab4/4bit/lcd_display_4bit.sym
  29. +292
    -0
      ee2a/lab4/4bit/lcd_display_4bit.tre
  30. +127
    -0
      ee2a/lab4/8bit/LCD_8BIT.H
  31. +38
    -0
      ee2a/lab4/8bit/lcd_display_8bit.PJT
  32. +63
    -0
      ee2a/lab4/8bit/lcd_display_8bit.c
  33. BIN
      ee2a/lab4/8bit/lcd_display_8bit.cof
  34. +2
    -0
      ee2a/lab4/8bit/lcd_display_8bit.err
  35. +45
    -0
      ee2a/lab4/8bit/lcd_display_8bit.hex
  36. +1005
    -0
      ee2a/lab4/8bit/lcd_display_8bit.lst
  37. +145
    -0
      ee2a/lab4/8bit/lcd_display_8bit.scp
  38. +38
    -0
      ee2a/lab4/8bit/lcd_display_8bit.sta
  39. +66
    -0
      ee2a/lab4/8bit/lcd_display_8bit.sym
  40. +62
    -0
      ee2a/lab4/8bit/lcd_display_8bit.tre
  41. BIN
      ee2a/lab4/DataSheets/Hitachi%20HD44780%20Dta%20Sheet.pdf
  42. BIN
      ee2a/lab4/DataSheets/Powertip%201602-F%20data%20sheet.pdf
  43. BIN
      ee2a/lab4/DataSheets/Samsung S6A0069.pdf
  44. +185
    -0
      ee2a/lab5/16F648A.H
  45. BIN
      ee2a/lab5/circuit_diagram.png
  46. +1658
    -0
      ee2a/lab5/circuit_diagram.svg
  47. +15
    -0
      ee2a/lab5/geany_run_script.sh
  48. +333
    -0
      ee2a/lab5/rs232.BAK
  49. +41
    -0
      ee2a/lab5/rs232.PJT
  50. +333
    -0
      ee2a/lab5/rs232.c
  51. BIN
      ee2a/lab5/rs232.cof
  52. +2
    -0
      ee2a/lab5/rs232.err
  53. +208
    -0
      ee2a/lab5/rs232.hex
  54. +2410
    -0
      ee2a/lab5/rs232.lst
  55. +13
    -0
      ee2a/lab5/rs232.occ
  56. +145
    -0
      ee2a/lab5/rs232.scp
  57. +60
    -0
      ee2a/lab5/rs232.sta
  58. +128
    -0
      ee2a/lab5/rs232.sym
  59. +86
    -0
      ee2a/lab5/rs232.tre
  60. BIN
      ee2a/lab5/test
  61. +195
    -0
      ee2a/lab5/test.c
  62. +66
    -0
      ee2a/lab6/MATLABcode.m
  63. BIN
      ee2a/lab6/circuit_diagram.png
  64. +1930
    -0
      ee2a/lab6/circuit_diagram.svg
  65. +224
    -0
      ee2a/lab6/optical-rs232.BAK
  66. +39
    -0
      ee2a/lab6/optical-rs232.PJT
  67. +224
    -0
      ee2a/lab6/optical-rs232.c
  68. BIN
      ee2a/lab6/optical-rs232.cof
  69. +2
    -0
      ee2a/lab6/optical-rs232.err
  70. +68
    -0
      ee2a/lab6/optical-rs232.hex
  71. +1575
    -0
      ee2a/lab6/optical-rs232.lst
  72. +145
    -0
      ee2a/lab6/optical-rs232.scp
  73. +45
    -0
      ee2a/lab6/optical-rs232.sta
  74. +77
    -0
      ee2a/lab6/optical-rs232.sym
  75. +102
    -0
      ee2a/lab6/optical-rs232.tre
  76. +389
    -0
      ee2a/lab7/AsyncFSM (1).~PRJFPG
  77. +368
    -0
      ee2a/lab7/AsyncFSM (2).~PRJFPG
  78. +79
    -0
      ee2a/lab7/AsyncFSM-cupl (1).~PLD
  79. +46
    -0
      ee2a/lab7/AsyncFSM-cupl (1).~SI
  80. +79
    -0
      ee2a/lab7/AsyncFSM-cupl (2).~PLD
  81. +29
    -0
      ee2a/lab7/AsyncFSM-cupl (2).~SI
  82. +79
    -0
      ee2a/lab7/AsyncFSM-cupl.PLD
  83. +46
    -0
      ee2a/lab7/AsyncFSM-cupl.SI
  84. BIN
      ee2a/lab7/AsyncFSM-cupl.abs
  85. +110
    -0
      ee2a/lab7/AsyncFSM-cupl.lst
  86. +90
    -0
      ee2a/lab7/AsyncFSM-cupl.rep
  87. +389
    -0
      ee2a/lab7/AsyncFSM.PRJFPG
  88. +99
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl (1).~lst
  89. +126
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl (1).~rep
  90. +63
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl (1).~wo
  91. +46
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl.SI
  92. +67
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl.jed
  93. +99
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl.lst
  94. +79
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl.pld
  95. +128
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl.rep
  96. +92
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl.so
  97. +72
    -0
      ee2a/lab7/ProjectOutputs/AsyncFSM-cupl.wo
  98. +11
    -0
      ee2a/lab7/ProjectOutputs/Status Report (1).~Txt
  99. +11
    -0
      ee2a/lab7/ProjectOutputs/Status Report.Txt
  100. +11
    -0
      ee2a/lab7/Status Report.Txt

BIN
ee2a/lab1/circuit_diagram.png View File

Before After
Width: 1052  |  Height: 744  |  Size: 66 KiB

+ 2638
- 0
ee2a/lab1/circuit_diagram.svg
File diff suppressed because it is too large
View File


+ 71
- 0
ee2a/lab2/counter_FSM.PLD View File

@@ -0,0 +1,71 @@
Name counter_FSM;
Partno tick;
Date 7th November 2006;
Revision 003;
Designer Ben Francis, Sam Black, Sam Burras;
Company University of Birmingham;
Assembly 1;
Location Earth;
Device P18CV8;
Format JEDEC;
/**********************************************************************/
/* This design uses a PEEL18CV8 in order to implement a 4-bit counter */
/* */
/* Device pin Layout ___________ */
/* CLOCK |1 \/ 20| Vcc (power supply) */
/* JAM_A |2 19| CLK */
/* JAM_B |3 18| QA */
/* JAM_C |4 17| QB */
/* JAM_D |5 16| QC */
/* JAM_ENABLE |6 15| QD */
/* S |7 14| Z */
/* R |8 13| */
/* |9 12| */
/* GND |10 11| */
/* |___________| */
/* */
/**********************************************************************/
/* Pin Assignments */
/* Inputs */
Pin 1 = CLOCK;
Pin 2 = JAM_A;
Pin 3 = JAM_B;
Pin 4 = JAM_C;
Pin 5 = JAM_D;
Pin 6 = JAM_ENABLE;
Pin 7 = S;
Pin 8 = R;
/* Ouputs */
Pin 14 = Z;
Pin 15 = QD;
Pin 16 = QC;
Pin 17 = QB;
Pin 18 = QA;
Pin 19 = CLK;
/* Boolean algebra */
QA.D = !QD & !QC & !JAM_ENABLE
# QD & !QA & !JAM_ENABLE
# QB & !JAM_ENABLE
# JAM_ENABLE & JAM_A;
QB.D = !QA & !QB & !JAM_ENABLE
# QD & !QA & !JAM_ENABLE
# JAM_ENABLE & JAM_B;
QC.D = QC & QA & !JAM_ENABLE
# !QC & !QA & !JAM_ENABLE
# JAM_ENABLE & JAM_C;
QD.D = QD & QC & !JAM_ENABLE
# QA & !QC & !JAM_ENABLE
# !QD & QB & !QA & !JAM_ENABLE
# JAM_ENABLE & JAM_D;
Z = QD & QC & !QB & QA;
CLK = S # CLK & !R;

+ 68
- 0
ee2a/lab2/counter_FSM.si View File

@@ -0,0 +1,68 @@
Name counter_FSM;
Partno tick;
Date 7th November 2006;
Revision 003;
Designer Ben Francis, Sam Black, Sam Burras;
Company University of Birmingham;
Assembly 1;
Location Earth;
Device P18CV8;
Format JEDEC;
/**********************************************************************/
/* This design uses a PEEL18CV8 in order to implement a 4-bit counter */
/* */
/* Device pin Layout ___________ */
/* CLOCK |1 \/ 20| Vcc (power supply) */
/* JAM_A |2 19| CLK */
/* JAM_B |3 18| QA */
/* JAM_C |4 17| QB */
/* JAM_D |5 16| QC */
/* JAM_ENABLE |6 15| QD */
/* S |7 14| Z */
/* R |8 13| */
/* |9 12| */
/* GND |10 11| */
/* |___________| */
/* */
/**********************************************************************/
/* ORDER STATEMENT */
Order: CLOCK,%1,JAM_D,%1,JAM_C,%1,JAM_B,%1,JAM_A,%1,JAM_ENABLE,%2,QD,%1,QC,%1,QB,%1,QA,%1,Z;
/* TEST VECTORS */
Vectors:
/* Allowed States */
C 1 1 0 1 1 H H L H H /* 13 */
C X X X X 0 H H L L L /* 12 */
C X X X X 0 H L H H L /* 11 */
C X X X X 0 H L L H L /* 9 */
C X X X X 0 H L L L L /* 8 */
C X X X X 0 L H H H L /* 7 */
C X X X X 0 L H L H L /* 5 */
C X X X X 0 L H L L L /* 4 */
C X X X X 0 L L H L L /* 2 */
C X X X X 0 H H L H H /* 13 */
/* Not Allowed States */
C 1 1 1 1 1 H H H H L /* 15 */
C X X X X 0 H H L H H /* 13 */
C 1 1 1 0 1 H H H L L /* 14 */
C X X X X 0 H L H H L /* 11 */
C 0 0 1 1 1 L L H H L /* 3 */
C X X X X 0 H L L H L /* 9 */
C 0 1 1 0 1 L H H L L /* 6 */
C X X X X 0 H L L H L /* 9 */
C 0 0 0 1 1 L L L H L /* 1 */
C X X X X 0 H L L H L /* 9 */
C 0 0 0 0 1 L L L L L /* 0 */
C X X X X 0 L H H H L /* 7 */
C 1 0 1 0 1 H L H L L /* 10 */
C X X X X 0 L H H H L /* 7 */

+ 92
- 0
ee2a/lab3/stepper_motor.c View File

@@ -0,0 +1,92 @@
#include <16F648A.h>
#use delay(clock=4000000)
#fuses NOWDT, INTRC_IO, NOPUT, NOPROTECT, NOLVP, NOMCLR
void main()
{
struct input_pin_map {
boolean anticlockwise;
boolean clockwise;
boolean speed1;
boolean speed2;
int unused: 4;
};
struct output_pin_map {
int motor1: 4;
int unused: 4;
};
int speed=500, i=0;
boolean direction=0;
struct input_pin_map buttons;
struct input_pin_map buttons_setup;
struct output_pin_map motor;
struct output_pin_map motor_setup;
// lookup table
int const FULL_LOOKUP_TABLE[4] = {
0x07, 0x06, 0x08, 0x09
};
int const HALF_LOOKUP_TABLE[8] = {
0x01, 0x09, 0x0A, 0x02, 0x06, 0x04, 0x05
};
#byte buttons=0x05 // assign buttons to port a
#byte motor=0x06 // assign motor to port b
#byte buttons_setup=0x85 // assign buttons_setup for port a TRIS
#byte motor_setup=0x86 // assign motor_setup for port b TRIS
motor_setup.motor1=0; // set as Output
buttons_setup.anticlockwise=1; // set as Input
buttons_setup.clockwise=1; // set as Input
buttons_setup.speed1=1; // set as Input
buttons_setup.speed2=1; // set as Input
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
while (1) { // REPEAT indefinitely
//determine if a button has been pressed
if((buttons.anticlockwise==FALSE || buttons.clockwise==FALSE) && !(buttons.anticlockwise==FALSE && buttons.clockwise==FALSE)) {
if(buttons.speed1==FALSE && buttons.speed2==FALSE)
speed=40;
else if(buttons.speed1==FALSE && buttons.speed2=TRUE)
speed=20;
else if(buttons.speed1==TRUE && buttons.speed2==FALSE)
speed=10;
else if(buttons.speed1==TRUE && buttons.speed2==TRUE)
speed=5;
else
speed=250;
// determine which button was pressed
if(buttons.clockwise==FALSE)
direction=1;
else if (buttons.anticlockwise==FALSE)
direction=0;
for(i=0;i<100;i++) { // REPEAT 100 times
if(direction==1) { // IF button 'C' was pressed THEN
//rotate the motor shaft clockwise
motor.motor1 = HALF_LOOKUP_TABLE[i%4];
}
else if(direction==0) { // OTHERWISE
//rotate the motor shaft anti-clockwise
motor.motor1 = HALF_LOOKUP_TABLE[3-(i%4)];
}
Delay_ms(speed); //insert time delay of one step period
}
}
else
motor.motor1 = 0x00;
}
}

+ 72
- 0
ee2a/lab3/stepper_motor_full.c View File

@@ -0,0 +1,72 @@
#include <16F648A.h>
#use delay(clock=4000000)
#fuses NOWDT, INTRC_IO, NOPUT, NOPROTECT, NOLVP, NOMCLR
void main()
{
struct input_pin_map {
boolean anticlockwise;
boolean clockwise;
int unused: 6;
};
struct output_pin_map {
int motor1: 4;
int unused: 4;
};
int speed=1, i=0;
boolean direction=0;
struct input_pin_map buttons;
struct input_pin_map buttons_setup;
struct output_pin_map motor;
struct output_pin_map motor_setup;
// lookup table
int const FULL_LOOKUP_TABLE[4] = {
0x07, 0x06, 0x08, 0x09
};
#byte buttons=0x05 // assign buttons to port a
#byte motor=0x06 // assign motor to port b
#byte buttons_setup=0x85 // assign buttons_setup for port a TRIS
#byte motor_setup=0x86 // assign motor_setup for port b TRIS
motor_setup.motor1=0; // set as Output
buttons_setup.anticlockwise=1; // set as Input
buttons_setup.clockwise=1; // set as Input
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
while (1) { // REPEAT indefinitely
//determine if a button has been pressed
if((buttons.anticlockwise==FALSE || buttons.clockwise==FALSE) && !(buttons.anticlockwise==FALSE && buttons.clockwise==FALSE)) {
// determine which button was pressed
if(buttons.clockwise==FALSE)
direction=1;
else if (buttons.anticlockwise==FALSE)
direction=0;
for(i=0;i<100;i++) { // REPEAT 100 times
if(direction==1) { // IF button 'C' was pressed THEN
//rotate the motor shaft clockwise
motor.motor1 = FULL_LOOKUP_TABLE[i%4];
}
else if(direction==0) { // OTHERWISE
//rotate the motor shaft anti-clockwise
motor.motor1 = FULL_LOOKUP_TABLE[3-(i%4)];
}
Delay_ms(20*speed); //insert time delay of one step period
}
}
else
motor.motor1 = 0x00;
}
}

+ 123
- 0
ee2a/lab3/stepper_motor_half.c View File

@@ -0,0 +1,123 @@
/**********************************************************************/
/* Sam Black, Sam Burras and Ben Francis */
/* 18/01/07 stepper_motor_half.c Fuse: INTRC RA6-IO */
/* */
/* Stepper motor controller for the 16F648A.h PIC */
/* Using half step with variable speed */
/* */
/* Device pin Layout ___________ */
/* Speed MSB |1 \/ 18| Input clockwise */
/* Speed LSB |2 17| Input anticlockwise */
/* |3 16| */
/* |4 15| */
/* V++ |5 14| 0V */
/* Motor pin 1 |6 13| */
/* Motor pin 2 |7 12| */
/* Motor pin 3 |8 11| */
/* Motor pin 4 |9 10| */
/* |___________| */
/* */
/**********************************************************************/
#include <16F648A.h>
#use delay(clock=4000000)
#fuses NOWDT, INTRC_IO, NOPUT, NOPROTECT, NOLVP, NOMCLR
void main()
{
/* Input pin map */
struct input_pin_map {
boolean anticlockwise;
boolean clockwise;
int speed: 2;
int unused: 4;
};
/* Output pin map */
struct output_pin_map {
int motor1: 4;
int unused: 4;
};
int speed=0; //delay in ms
int i=0;
boolean direction=0;
struct input_pin_map buttons;
struct input_pin_map buttons_setup;
struct output_pin_map motor;
struct output_pin_map motor_setup;
// lookup table
int const FULL_LOOKUP_TABLE[4] = {
0x07, 0x06, 0x08, 0x09
};
int const HALF_LOOKUP_TABLE[8] = {
0x08, 0x0C, 0x04, 0x06, 0x02, 0x03, 0x01, 0x09
};
#byte buttons=0x05 // assign buttons to port a
#byte motor=0x06 // assign motor to port b
#byte buttons_setup=0x85 // assign buttons_setup for port a TRIS
#byte motor_setup=0x86 // assign motor_setup for port b TRIS
motor_setup.motor1=0; // set as Output
buttons_setup.anticlockwise=1; // set as Input
buttons_setup.clockwise=1; // set as Input
buttons_setup.speed=1; // set as Input
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
while (1) { // REPEAT indefinitely
//determine if a button has been pressed
if((buttons.anticlockwise==FALSE || buttons.clockwise==FALSE) && !(buttons.anticlockwise==FALSE && buttons.clockwise==FALSE)) {
// read speed setting from PORT A pins 2 & 3. Pin 2 is the MSB.
switch(buttons.speed) {
case 0x00:
speed = 16;
break;
case 0x01:
speed = 8;
break;
case 0x02:
speed = 4;
break;
case 0x03:
speed = 2;
break;
default:
speed = 200;
break;
}
// determine which button was pressed
if(buttons.clockwise==FALSE)
direction=1;
else if (buttons.anticlockwise==FALSE)
direction=0;
for(i=0;i<200;i++) { // REPEAT 100 times
if(direction==1) { // IF button 'C' was pressed THEN
//rotate the motor shaft clockwise
motor.motor1 = HALF_LOOKUP_TABLE[i%8];
}
else if(direction==0) { // OTHERWISE
//rotate the motor shaft anti-clockwise
motor.motor1 = HALF_LOOKUP_TABLE[7-(i%8)];
}
delay_ms(speed); //insert time delay of one step period
}
}
else
/* Don't move the rotor */
motor.motor1 = 0x00;
}
}

+ 140
- 0
ee2a/lab4/4bit/LCD_4BIT.H View File

@@ -0,0 +1,140 @@
/* LCD 4-bit driver
*
* Authors: Sam Black, Sam Burras, Ben Francis
*
* Derived from Custom Computer Services
* (C) Copyright 1996, 2003 LCD.C
*
* Version 1.0 Date: 07/02/07
*
*/
struct lcd_pin_map {
boolean rs;
boolean rw;
boolean enable;
boolean button;
int data : 4;
};
/* Create structs to map I/O */
struct lcd_pin_map lcd;
struct lcd_pin_map lcd_dir;
/* Set ports up correctly */
#byte lcd=0x06
#byte lcd_dir=0x86
/* Send initialization sequence */
/* No cursor */
byte CONST lcd_init_nocursor[4] = {0x28, 0x0C, 0x01, 0x06};
/* Cursor */
byte CONST lcd_init_cursor[4] = {0x28, 0x0E, 0x01, 0x06};
/* Scrolling */
byte CONST lcd_init_scrolling[4] = {0x20, 0x0C, 0x01, 0x05};
/* Set direction of pins to send chars to LCD */
/* RS, RW, ENABLE, BUTTON, DATA */
struct lcd_pin_map CONST lcd_write = {0, 0, 0, 1, 0};
/* Set direction of pins to read status from LCD */
struct lcd_pin_map CONST lcd_read = {1, 0, 0, 1, 1};
/* Based on lcd.c */
void lcd_send_nibble( byte n ) {
lcd.enable = 1;
delay_us(50);
lcd.data = n;
delay_ms(1);
lcd.enable = 0;
delay_us(50);
}
/* Based on lcd.c */
void lcd_send_byte( byte address, byte n ) {
/* Set port direction */
lcd_dir = lcd_write;
/* Set what we are writing to */
/* 0 is Instruction */
/* 1 is Data */
lcd.rs = address;
/* Write to LCD */
lcd.rw = 0;
delay_us(500);
lcd_send_nibble(n>>4);
delay_ms(1);
lcd_send_nibble(n & 0xf);
/* Reset RW/RS */
lcd.rw = 1;
lcd.rs = 0;
delay_us(500);
}
/* Based on lcd.c */
boolean lcd_read_status() {
boolean status;
/* Set port direction */
lcd_dir = lcd_read;
/* Read from the LCD */
lcd.rw = 1;
delay_us(1);
lcd.enable = 1;
delay_us(1);
status = lcd.rs;
lcd.enable = 0;
delay_us(2);
/* Return the status */
return(status);
}
/* Based on lcd.c */
void lcd_init(int init) {
int i;
lcd_dir = lcd_write;
lcd.rs = 0;
lcd.rw = 0;
lcd.enable = 0;
delay_ms(15);
for(i=0; i<=3; i++) {
lcd_send_nibble(0x03);
delay_ms(5);
}
/* Semd extra init nibble */
lcd_send_nibble(0x02);
delay_ms(5);
switch (init) {
case 1 : for(i=0; i<=3; i++)
lcd_send_byte(0, lcd_init_nocursor[i]); break;
case 2 : for(i=0; i<=3; i++)
lcd_send_byte(0, lcd_init_cursor[i]); break;
case 3 : for(i=0; i<=3; i++)
lcd_send_byte(0, lcd_init_scrolling[i]); break;
default : for(i=0; i<=3; i++)
lcd_send_byte(0, lcd_init_nocursor[i]); break;
}
}
/* Based on lcd.c */
void lcd_putc( char c ) {
switch (c) {
/* clear the screen */
case '\f' : lcd_send_byte(0, 0x01);
delay_ms(2); break;
/* back space */
case '\b' : lcd_send_byte(0, 0x08); break;
/* new line */
case '\n' : lcd_send_byte(0, 0xC0); break;
default : lcd_send_byte(1, c); break;
}
}

+ 107
- 0
ee2a/lab4/4bit/lcd_display.BAK View File

@@ -0,0 +1,107 @@
/* LCD string program
* This program sends strings to an LCD via the 8 or 4 bit driver
* included in the header.
*/
#include <16F648A.h>
#include <string.h>
#use delay(clock=4000000)
#fuses NOWDT, INTRC_IO, NOPUT, NOPROTECT, NOLVP, NOMCLR
#include "LCD_4BIT.H"
char INITMESSAGE[16] = "How can I help?";
char MESSAGE1[16] = "The answer?";
char MESSAGE2[16] = "Forty Two.";
char MESSAGE3[16] = " ?noitseuQ ehT";
//char MESSAGE3[16] = {'T','h','e',' ','q','u','e','s','t','i','o','n','?',' ',' '};
void send_string(int delay, char string[])
{
int i;
/* send the string */
for(i=0; string[i] != '\0'; i++)
{
lcd_putc(string[i]);
delay_ms(delay);
}
}
void send_string_reverse(int delay, char string[])
{
int i;
/* send the string */
for(i=14; i>=0; i--)
{
lcd_putc(string[i]);
delay_ms(delay);
}
}
int main(void)
{
/* Init the Display */
lcd_init(2);
/* Clear the screen */
lcd_putc('\f');
/* Send the message */
send_string(5, INITMESSAGE);
/* Display on the first line after button press */
while(lcd.button == 1)
{ }
lcd_putc('\f');
send_string(1000, MESSAGE1);
while(lcd.button == 1)
{ }
lcd_putc('\f');
/* New line */
lcd_putc('\n');
send_string(5, MESSAGE2);
/* Add delay for button debouncing */
delay_ms(500);
/*wait for button press*/
while(lcd.button == 1)
{ }
/* Re-initialise the display to scroll */
lcd_init(3);
while(1) {
send_string(200, MESSAGE3);
/*
lcd_putc('?');
delay_ms(200);
lcd_putc('n');
delay_ms(200);
lcd_putc('o');
delay_ms(200);
lcd_putc('i');
delay_ms(200);
lcd_putc('t');
delay_ms(200);
lcd_putc('s');
delay_ms(200);
lcd_putc('e');
delay_ms(200);
lcd_putc('u');
delay_ms(200);
lcd_putc('q');
delay_ms(200);
lcd_putc(' ');
delay_ms(200);
lcd_putc('e');
delay_ms(200);
lcd_putc('h');
delay_ms(200);
lcd_putc('T');
delay_ms(200);
lcd_putc(' ');
delay_ms(200);
*/
}
return 0;
}

+ 38
- 0
ee2a/lab4/4bit/lcd_display.PJT View File

@@ -0,0 +1,38 @@
[PROJECT]
Target=lcd_display.HEX
Development_Mode=2
Processor=0x648A
ToolSuite=CCS
[Directories]
Include=
Library=
LinkerScript=
[Target Data]
FileList=Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
[lcd_display.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
[mru-list]
1=Y:\YEAR2~1\EE2A\PIC-LCD\4bit\LCD_DI~1.C
[Windows]
0=0000 Y:\YEAR2~1\EE2A\PIC-LCD\4bit\LCD_DI~1.C 0 0 796 451 3 0
[Opened Files]
1=Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.c
2=
[Units]
Count=1
1=Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.c (main)

BIN
ee2a/lab4/4bit/lcd_display.cof View File


+ 1073
- 0
ee2a/lab4/4bit/lcd_display.cof.txt
File diff suppressed because it is too large
View File


+ 2
- 0
ee2a/lab4/4bit/lcd_display.err View File

@@ -0,0 +1,2 @@
No Errors
0 Errors, 0 Warnings.

+ 59
- 0
ee2a/lab4/4bit/lcd_display.hex View File

@@ -0,0 +1,59 @@
:1000000000308A000A2900000A108A100A118207AB
:1000100028340C34013406340A108A100A1182077D
:1000200028340E34013406340A108A100A1182076B
:1000300020340C34013405346A308400000803197C
:1000400030280130F800F701F70B2428F80B23289B
:100050004A30F700F70B2A2800000000800B212807
:10006000003406151030F700F70B34280000690E35
:10007000F039F7000F300605770486000130EA00FA
:100080001C2006111030F700F70B44280000003444
:100090000830831686008312661C06106618061444
:1000A0008610A630F700F70B53280000670EE80013
:1000B0000F30E8056808E90031200130EA001C2013
:1000C00067080F39E800E900312086140610A630D1
:1000D000F700F70B6928000000340830831686000B
:1000E00083120610861006110F30EA001C20E20170
:1000F0006208033C031C84280330E90031200530EA
:10010000EA001C20E20A78280230E900312005309C
:10011000EA001C206108013A03199528033A0319E3
:10012000A428013A0319B328C228E2016208033C5B
:10013000031CA32862080420E300E6016308E7002B
:100140004820E20A9628D128E2016208033C031CF9
:10015000B22862080C20E300E6016308E7004820AB
:10016000E20AA528D128E2016208033C031CC12849
:1001700062081420E300E6016308E7004820E20A71
:10018000B428D128E2016208033C031CD02862088D
:100190000420E300E6016308E7004820E20AC328E0
:1001A000D128003465080C3A0319DD28043A0319F4
:1001B000E528023A0319EA28EF28E6010130E700B2
:1001C00048200230EA001C20F528E6010830E7004C
:1001D0004820F528E601C030E7004820F528013026
:1001E000E6006508E7004820F5280034E3016208CE
:1001F00063078400800803190929620863078400E3
:100200000008E400E500D2206108EA001C20E30AAF
:10021000F728003484011F30830507309F00A001B8
:100220004830A1006F30A2007730A3002030A40036
:100230006330A5006130A6006E30A7002030A80012
:100240004930A9002030AA006830AB006530AC000E
:100250006C30AD007030AE003F30AF00B0015430B4
:10026000B1006830B2006530B3002030B4006130B6
:10027000B5006E30B6007330B7007730B800653027
:10028000B9007230BA003F30BB00BC01BD01BE01F5
:10029000BF01C0014630C1006F30C2007230C300E0
:1002A0007430C4007930C5002030C6005430C70017
:1002B0007730C8006F30C9002E30CA00CB01CC01A6
:1002C000CD01CE01CF01D0012030D100D2003F308E
:1002D000D3006E30D4006F30D5006930D600743052
:1002E000D7007330D8006530D9007530DA0051304E
:1002F000DB002030DC006530DD006830DE0054308B
:10030000DF00E0010230E1006D200C30E500D2207A
:100310000530E1002130E200F62086198D290C30ED
:10032000E500D220E830E1003130E200F620861905
:1003300097290C30E500D2200A30E500D2200530A4
:10034000E1004130E200F6200230E100FA30EA003C
:100350001C20E10BA6298619AB290330E1006D2092
:10036000C830E1005130E200F620B0290030F8003A
:02037000630028
:02400E00583F19
:00000001FF
;PIC16F648A

+ 1153
- 0
ee2a/lab4/4bit/lcd_display.lst
File diff suppressed because it is too large
View File


+ 145
- 0
ee2a/lab4/4bit/lcd_display.scp View File

@@ -0,0 +1,145 @@
[Global]
Fuse0=16216
Fuse1=16383
Fuse2=16383
Fuse3=16383
Fuse4=16383
Fuse5=16383
Fuse6=16383
Fuse7=16383
Fuse8=16383
Fuse9=16383
Fuse10=16383
Fuse11=16383
Fuse12=16383
Fuse13=16383
Fuse14=16383
Fuse15=16383
Fuse16=16383
Fuse17=16383
Fuse18=16383
Fuse19=16383
Fuse20=16383
Fuse21=16383
Fuse22=16383
Fuse23=16383
Fuse24=16383
Fuse25=16383
Fuse26=16383
Fuse27=16383
Fuse28=16383
Fuse29=16383
Fuse30=16383
Fuse31=16383
Fuse32=16383
Fuse33=16383
Fuse34=16383
Fuse35=16383
Fuse36=16383
Fuse37=16383
Fuse38=16383
Fuse39=16383
Fuse40=16383
Fuse41=16383
Fuse42=16383
Fuse43=16383
Fuse44=16383
Fuse45=16383
Fuse46=16383
Fuse47=16383
Fuse48=16383
Fuse49=16383
Fuse50=16383
Fuse51=16383
Fuse52=16383
Fuse53=16383
Fuse54=16383
Fuse55=16383
Fuse56=16383
Fuse57=16383
Fuse58=16383
Fuse59=16383
Fuse60=16383
Fuse61=16383
Fuse62=16383
Fuse63=16383
Fuse64=16383
Fuse65=16383
Fuse66=16383
Fuse67=16383
Fuse68=16383
Fuse69=16383
Fuse70=16383
Fuse71=16383
Fuse72=16383
Fuse73=16383
Fuse74=16383
Fuse75=16383
Fuse76=16383
Fuse77=16383
Fuse78=16383
Fuse79=16383
Fuse80=16383
Fuse81=16383
Fuse82=16383
Fuse83=16383
Fuse84=16383
Fuse85=16383
Fuse86=16383
Fuse87=16383
Fuse88=16383
Fuse89=16383
Fuse90=16383
Fuse91=16383
Fuse92=16383
Fuse93=16383
Fuse94=16383
Fuse95=16383
Fuse96=16383
Fuse97=16383
Fuse98=16383
Fuse99=16383
Fuse100=16383
Fuse101=16383
Fuse102=16383
Fuse103=16383
Fuse104=16383
Fuse105=16383
Fuse106=16383
Fuse107=16383
Fuse108=16383
Fuse109=16383
Fuse110=16383
Fuse111=16383
Fuse112=16383
Fuse113=16383
Fuse114=16383
Fuse115=16383
Fuse116=16383
Fuse117=16383
Fuse118=16383
Fuse119=16383
Fuse120=16383
Fuse121=16383
Fuse122=16383
Fuse123=16383
Fuse124=16383
Fuse125=16383
Fuse126=16383
Fuse127=16383
QPM=0
VAW=1
ProcType=16F648A
EEFileName=
UD0=15
UD1=15
UD2=15
UD3=15
icsp=0
idtype=0
prid=0
pridstart=0
pridlength=4
pridseq=0
progseq=63
pridstring=

+ 40
- 0
ee2a/lab4/4bit/lcd_display.sta View File

@@ -0,0 +1,40 @@
ROM used: 441 (11%)
441 (11%) including unused fragments
0 Average locations per line
2 Average locations per statement
RAM used: 71 (41%) at main() level
80 (46%) worst case
Lines Stmts % Files
----- ----- --- -----
108 28 13 Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.c
203 0 0 C:\Program Files\PICC\devices\16F648A.h
417 126 52 C:\Program Files\PICC\drivers\string.h
28 0 0 C:\Program Files\PICC\drivers\stddef.h
28 0 0 C:\Program Files\PICC\drivers\ctype.h
133 59 16 Y:\Year 2\EE2A\PIC-LCD\4bit\LCD_4BIT.H
----- -----
1834 426 Total
Page ROM % RAM Functions:
---- --- --- --- ----------
0 21 5 1 @delay_ms1
0 8 2 0 @const131
0 8 2 0 @const133
0 8 2 0 @const135
0 23 5 1 lcd_send_nibble
0 37 8 3 lcd_send_byte
0 101 23 3 lcd_init
0 36 8 1 lcd_putc
0 20 5 4 send_string
0 175 40 1 main
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-007FF 437 1607
00800-00FFF 0 2048

+ 70
- 0
ee2a/lab4/4bit/lcd_display.sym View File

@@ -0,0 +1,70 @@
006 lcd
015 CCP_1_LOW
015-016 CCP_1
016 CCP_1_HIGH
01F.6 C1OUT
01F.7 C2OUT
020 strtok.save
021-030 INITMESSAGE
031-040 MESSAGE1
041-050 MESSAGE2
051-060 MESSAGE3
061 send_string.delay
061 lcd_init.init
061 main.@SCRATCH
062 send_string.string
062 lcd_init.i
063 send_string.i
063 lcd_init.@SCRATCH
064 send_string.@SCRATCH
065 lcd_putc.c
066 lcd_send_byte.address
067 lcd_send_byte.n
068 lcd_send_byte.@SCRATCH
069 lcd_send_nibble.n
06A @delay_ms1.P1
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
079 @SCRATCH
07A @SCRATCH
07B @SCRATCH
086 lcd_dir
001C @delay_ms1
0004 @const131
000C @const133
0014 @const135
0031 lcd_send_nibble
0048 lcd_send_byte
006D lcd_init
00D2 lcd_putc
00F6 send_string
010A main
010A @cinit
Project Files:
Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.c
C:\Program Files\PICC\devices\16F648A.h
C:\Program Files\PICC\drivers\string.h
C:\Program Files\PICC\drivers\stddef.h
C:\Program Files\PICC\drivers\ctype.h
Y:\Year 2\EE2A\PIC-LCD\4bit\LCD_4BIT.H
Units:
Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.c (main)
Compiler Settings:
Processor: PIC16F648A
Pointer Size: 8
Opt Level: 9
Short,Int,Long: 1,8,16
Output Files:
Errors: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.err
INHX8: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.hex
Symbols: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.sym
List: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.lst
Debug/COFF: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.cof
Call Tree: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.tre
Statistics: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display.sta

+ 292
- 0
ee2a/lab4/4bit/lcd_display.tre View File

@@ -0,0 +1,292 @@
ÀÄlcd_display
ÀÄmain 0/175 Ram=1
ÃÄ??0??
ÃÄlcd_init 0/101 Ram=3
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const131 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const133 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const135 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const131 0/8 Ram=0
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄsend_string 0/20 Ram=4
³ ÃÄlcd_putc 0/36 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄsend_string 0/20 Ram=4
³ ÃÄlcd_putc 0/36 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄsend_string 0/20 Ram=4
³ ÃÄlcd_putc 0/36 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_init 0/101 Ram=3
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const131 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const133 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const135 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const131 0/8 Ram=0
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÀÄsend_string 0/20 Ram=4
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÀÄ@delay_ms1 0/21 Ram=1

+ 38
- 0
ee2a/lab4/4bit/lcd_display_4bit.PJT View File

@@ -0,0 +1,38 @@
[PROJECT]
Target=lcd_display_4bit.HEX
Development_Mode=2
Processor=0x648A
ToolSuite=CCS
[Directories]
Include=
Library=
LinkerScript=
[Target Data]
FileList=Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.c
BuildTool=C-COMPILER
OptionString=+FM
AdditionalOptionString=
BuildRequired=1
[lcd_display_4bit.c]
Type=4
Path=
FileList=
BuildTool=
OptionString=
AdditionalOptionString=
[mru-list]
1=Y:\YEAR2~1\EE2A\PIC-LCD\4bit\LCD_DI~1.C
[Windows]
0=0000 Y:\YEAR2~1\EE2A\PIC-LCD\4bit\LCD_DI~1.C 0 0 796 451 3 0
[Opened Files]
1=Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.c
2=
[Units]
Count=1
1=Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.c (main)

+ 81
- 0
ee2a/lab4/4bit/lcd_display_4bit.c View File

@@ -0,0 +1,81 @@
/*
* Authors: Sam Black, Sam Burras, Ben Francis
*
* Version 1.0 Date: 07/02/07
*
* Program to send strings to the LCD using
* a 4-bit driver
*
*/
#include <16F648A.h>
#include <string.h>
#use delay(clock=4000000)
#fuses NOWDT, INTRC_IO, NOPUT, NOPROTECT, NOLVP, NOMCLR
#include "LCD_4BIT.H"
char INITMESSAGE[16] = "How can I help?";
char MESSAGE1[16] = "The answer?";
char MESSAGE2[16] = "Forty Two.";
char MESSAGE3[16] = " ?noitseuQ ehT";
void send_string(int delay, char string[])
{
int i;
/* send the string */
for(i=0; string[i] != '\0'; i++)
{
lcd_putc(string[i]);
delay_ms(delay);
}
}
void send_string_reverse(int delay, char string[])
{
int i;
/* send the string */
for(i=14; i>=0; i--)
{
lcd_putc(string[i]);
delay_ms(delay);
}
}
int main(void)
{
/* Init the Display */
lcd_init(2);
/* Clear the screen */
lcd_putc('\f');
/* Send the message */
send_string(5, INITMESSAGE);
/* Display on the first line after button press */
while(lcd.button == 1)
{ }
lcd_putc('\f');
send_string(1000, MESSAGE1);
while(lcd.button == 1)
{ }
lcd_putc('\f');
/* New line */
lcd_putc('\n');
send_string(5, MESSAGE2);
/* Add delay for button debouncing */
delay_ms(500);
/*wait for button press*/
while(lcd.button == 1)
{ }
/* Re-initialise the display to scroll */
lcd_init(3);
while(1) {
send_string(200, MESSAGE3);
}
return 0;
}

BIN
ee2a/lab4/4bit/lcd_display_4bit.cof View File


+ 2
- 0
ee2a/lab4/4bit/lcd_display_4bit.err View File

@@ -0,0 +1,2 @@
No Errors
0 Errors, 0 Warnings.

+ 59
- 0
ee2a/lab4/4bit/lcd_display_4bit.hex View File

@@ -0,0 +1,59 @@
:1000000000308A000A2900000A108A100A118207AB
:1000100028340C34013406340A108A100A1182077D
:1000200028340E34013406340A108A100A1182076B
:1000300020340C34013405346A308400000803197C
:1000400030280130F800F701F70B2428F80B23289B
:100050004A30F700F70B2A2800000000800B212807
:10006000003406151030F700F70B34280000690E35
:10007000F039F7000F300605770486000130EA00FA
:100080001C2006111030F700F70B44280000003444
:100090000830831686008312661C06106618061444
:1000A0008610A630F700F70B53280000670EE80013
:1000B0000F30E8056808E90031200130EA001C2013
:1000C00067080F39E800E900312086140610A630D1
:1000D000F700F70B6928000000340830831686000B
:1000E00083120610861006110F30EA001C20E20170
:1000F0006208033C031C84280330E90031200530EA
:10010000EA001C20E20A78280230E900312005309C
:10011000EA001C206108013A03199528033A0319E3
:10012000A428013A0319B328C228E2016208033C5B
:10013000031CA32862080420E300E6016308E7002B
:100140004820E20A9628D128E2016208033C031CF9
:10015000B22862080C20E300E6016308E7004820AB
:10016000E20AA528D128E2016208033C031CC12849
:1001700062081420E300E6016308E7004820E20A71
:10018000B428D128E2016208033C031CD02862088D
:100190000420E300E6016308E7004820E20AC328E0
:1001A000D128003465080C3A0319DD28043A0319F4
:1001B000E528023A0319EA28EF28E6010130E700B2
:1001C00048200230EA001C20F528E6010830E7004C
:1001D0004820F528E601C030E7004820F528013026
:1001E000E6006508E7004820F5280034E3016208CE
:1001F00063078400800803190929620863078400E3
:100200000008E400E500D2206108EA001C20E30AAF
:10021000F728003484011F30830507309F00A001B8
:100220004830A1006F30A2007730A3002030A40036
:100230006330A5006130A6006E30A7002030A80012
:100240004930A9002030AA006830AB006530AC000E
:100250006C30AD007030AE003F30AF00B0015430B4
:10026000B1006830B2006530B3002030B4006130B6
:10027000B5006E30B6007330B7007730B800653027
:10028000B9007230BA003F30BB00BC01BD01BE01F5
:10029000BF01C0014630C1006F30C2007230C300E0
:1002A0007430C4007930C5002030C6005430C70017
:1002B0007730C8006F30C9002E30CA00CB01CC01A6
:1002C000CD01CE01CF01D0012030D100D2003F308E
:1002D000D3006E30D4006F30D5006930D600743052
:1002E000D7007330D8006530D9007530DA0051304E
:1002F000DB002030DC006530DD006830DE0054308B
:10030000DF00E0010230E1006D200C30E500D2207A
:100310000530E1002130E200F62086198D290C30ED
:10032000E500D220E830E1003130E200F620861905
:1003300097290C30E500D2200A30E500D2200530A4
:10034000E1004130E200F6200230E100FA30EA003C
:100350001C20E10BA6298619AB290330E1006D2092
:10036000C830E1005130E200F620B0290030F8003A
:02037000630028
:02400E00583F19
:00000001FF
;PIC16F648A

+ 1135
- 0
ee2a/lab4/4bit/lcd_display_4bit.lst
File diff suppressed because it is too large
View File


+ 145
- 0
ee2a/lab4/4bit/lcd_display_4bit.scp View File

@@ -0,0 +1,145 @@
[Global]
Fuse0=16216
Fuse1=16383
Fuse2=16383
Fuse3=16383
Fuse4=16383
Fuse5=16383
Fuse6=16383
Fuse7=16383
Fuse8=16383
Fuse9=16383
Fuse10=16383
Fuse11=16383
Fuse12=16383
Fuse13=16383
Fuse14=16383
Fuse15=16383
Fuse16=16383
Fuse17=16383
Fuse18=16383
Fuse19=16383
Fuse20=16383
Fuse21=16383
Fuse22=16383
Fuse23=16383
Fuse24=16383
Fuse25=16383
Fuse26=16383
Fuse27=16383
Fuse28=16383
Fuse29=16383
Fuse30=16383
Fuse31=16383
Fuse32=16383
Fuse33=16383
Fuse34=16383
Fuse35=16383
Fuse36=16383
Fuse37=16383
Fuse38=16383
Fuse39=16383
Fuse40=16383
Fuse41=16383
Fuse42=16383
Fuse43=16383
Fuse44=16383
Fuse45=16383
Fuse46=16383
Fuse47=16383
Fuse48=16383
Fuse49=16383
Fuse50=16383
Fuse51=16383
Fuse52=16383
Fuse53=16383
Fuse54=16383
Fuse55=16383
Fuse56=16383
Fuse57=16383
Fuse58=16383
Fuse59=16383
Fuse60=16383
Fuse61=16383
Fuse62=16383
Fuse63=16383
Fuse64=16383
Fuse65=16383
Fuse66=16383
Fuse67=16383
Fuse68=16383
Fuse69=16383
Fuse70=16383
Fuse71=16383
Fuse72=16383
Fuse73=16383
Fuse74=16383
Fuse75=16383
Fuse76=16383
Fuse77=16383
Fuse78=16383
Fuse79=16383
Fuse80=16383
Fuse81=16383
Fuse82=16383
Fuse83=16383
Fuse84=16383
Fuse85=16383
Fuse86=16383
Fuse87=16383
Fuse88=16383
Fuse89=16383
Fuse90=16383
Fuse91=16383
Fuse92=16383
Fuse93=16383
Fuse94=16383
Fuse95=16383
Fuse96=16383
Fuse97=16383
Fuse98=16383
Fuse99=16383
Fuse100=16383
Fuse101=16383
Fuse102=16383
Fuse103=16383
Fuse104=16383
Fuse105=16383
Fuse106=16383
Fuse107=16383
Fuse108=16383
Fuse109=16383
Fuse110=16383
Fuse111=16383
Fuse112=16383
Fuse113=16383
Fuse114=16383
Fuse115=16383
Fuse116=16383
Fuse117=16383
Fuse118=16383
Fuse119=16383
Fuse120=16383
Fuse121=16383
Fuse122=16383
Fuse123=16383
Fuse124=16383
Fuse125=16383
Fuse126=16383
Fuse127=16383
QPM=0
VAW=1
ProcType=16F648A
EEFileName=
UD0=15
UD1=15
UD2=15
UD3=15
icsp=0
idtype=0
prid=0
pridstart=0
pridlength=4
pridseq=0
progseq=2
pridstring=

+ 40
- 0
ee2a/lab4/4bit/lcd_display_4bit.sta View File

@@ -0,0 +1,40 @@
ROM used: 441 (11%)
441 (11%) including unused fragments
0 Average locations per line
2 Average locations per statement
RAM used: 71 (41%) at main() level
80 (46%) worst case
Lines Stmts % Files
----- ----- --- -----
82 28 13 Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.c
203 0 0 C:\Program Files\PICC\devices\16F648A.h
417 126 52 C:\Program Files\PICC\drivers\string.h
28 0 0 C:\Program Files\PICC\drivers\stddef.h
28 0 0 C:\Program Files\PICC\drivers\ctype.h
141 59 16 Y:\Year 2\EE2A\PIC-LCD\4bit\LCD_4BIT.H
----- -----
1798 426 Total
Page ROM % RAM Functions:
---- --- --- --- ----------
0 21 5 1 @delay_ms1
0 8 2 0 @const131
0 8 2 0 @const133
0 8 2 0 @const135
0 23 5 1 lcd_send_nibble
0 37 8 3 lcd_send_byte
0 101 23 3 lcd_init
0 36 8 1 lcd_putc
0 20 5 4 send_string
0 175 40 1 main
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-007FF 437 1607
00800-00FFF 0 2048

+ 70
- 0
ee2a/lab4/4bit/lcd_display_4bit.sym View File

@@ -0,0 +1,70 @@
006 lcd
015 CCP_1_LOW
015-016 CCP_1
016 CCP_1_HIGH
01F.6 C1OUT
01F.7 C2OUT
020 strtok.save
021-030 INITMESSAGE
031-040 MESSAGE1
041-050 MESSAGE2
051-060 MESSAGE3
061 send_string.delay
061 lcd_init.init
061 main.@SCRATCH
062 send_string.string
062 lcd_init.i
063 send_string.i
063 lcd_init.@SCRATCH
064 send_string.@SCRATCH
065 lcd_putc.c
066 lcd_send_byte.address
067 lcd_send_byte.n
068 lcd_send_byte.@SCRATCH
069 lcd_send_nibble.n
06A @delay_ms1.P1
077 @SCRATCH
078 @SCRATCH
078 _RETURN_
079 @SCRATCH
07A @SCRATCH
07B @SCRATCH
086 lcd_dir
001C @delay_ms1
0004 @const131
000C @const133
0014 @const135
0031 lcd_send_nibble
0048 lcd_send_byte
006D lcd_init
00D2 lcd_putc
00F6 send_string
010A main
010A @cinit
Project Files:
Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.c
C:\Program Files\PICC\devices\16F648A.h
C:\Program Files\PICC\drivers\string.h
C:\Program Files\PICC\drivers\stddef.h
C:\Program Files\PICC\drivers\ctype.h
Y:\Year 2\EE2A\PIC-LCD\4bit\LCD_4BIT.H
Units:
Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.c (main)
Compiler Settings:
Processor: PIC16F648A
Pointer Size: 8
Opt Level: 9
Short,Int,Long: 1,8,16
Output Files:
Errors: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.err
INHX8: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.hex
Symbols: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.sym
List: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.lst
Debug/COFF: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.cof
Call Tree: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.tre
Statistics: Y:\Year 2\EE2A\PIC-LCD\4bit\lcd_display_4bit.sta

+ 292
- 0
ee2a/lab4/4bit/lcd_display_4bit.tre View File

@@ -0,0 +1,292 @@
ÀÄlcd_display_4bit
ÀÄmain 0/175 Ram=1
ÃÄ??0??
ÃÄlcd_init 0/101 Ram=3
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const131 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const133 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const135 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const131 0/8 Ram=0
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄsend_string 0/20 Ram=4
³ ÃÄlcd_putc 0/36 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄsend_string 0/20 Ram=4
³ ÃÄlcd_putc 0/36 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄsend_string 0/20 Ram=4
³ ÃÄlcd_putc 0/36 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÃÄ@delay_ms1 0/21 Ram=1
ÃÄlcd_init 0/101 Ram=3
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const131 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const133 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const135 0/8 Ram=0
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@const131 0/8 Ram=0
³ ÀÄlcd_send_byte 0/37 Ram=3
³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1
³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ÀÄ@delay_ms1 0/21 Ram=1
ÀÄsend_string 0/20 Ram=4
ÃÄlcd_putc 0/36 Ram=1
³ ÃÄlcd_send_byte 0/37 Ram=3
³ ³ ÃÄlcd_send_nibble 0/23 Ram=1
³ ³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ³ ÃÄ@delay_ms1 0/21 Ram=1
³ ³ ÀÄlcd_send_nibble 0/23 Ram=1
³ ³ ÀÄ@delay_ms1 0/21 Ram=1
³ ÃÄ@delay_ms1 0/21 Ram=1