@ -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; |
@ -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 */ |
@ -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; | |||
} | |||
} | |||
@ -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; | |||
} | |||
} | |||
@ -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; | |||
} | |||
} | |||
@ -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; | |||
} | |||
} | |||
@ -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; | |||
} |
@ -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) |
@ -0,0 +1,2 @@ | |||
No Errors | |||
0 Errors, 0 Warnings. |
@ -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 |
@ -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= |
@ -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 | |||
@ -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 |
@ -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 |
@ -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) |
@ -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; | |||
} |
@ -0,0 +1,2 @@ | |||
No Errors | |||
0 Errors, 0 Warnings. |
@ -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 |
@ -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= |
@ -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 | |||
@ -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 |
@ -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 | |||