Код: Выделить всё
#include <16F876A.h>
#include <string.h>
#fuses NOWDT,HS,NOPUT,NOBROWNOUT,NOLVP,NOCPD,NOPROTECT,DEBUG,NOWRT
#use delay(clock=20000000)
#use fixed_io(b_outputs=PIN_B0,PIN_B1,PIN_B2,PIN_B3,PIN_B4,PIN_B5)
#define lcd_rs PIN_B0
#define lcd_en PIN_B1
#define lcd_d4 PIN_B2
#define lcd_d5 PIN_B3
#define lcd_d6 PIN_B4
#define lcd_d7 PIN_B5
void lcd_strobe() {output_bit(lcd_en,1);delay_us(5);output_bit(lcd_en,0);}
void lcd_cmd_on() {output_bit(lcd_rs,0);}
void lcd_cmd_off() {output_bit(lcd_rs,1);}
void lcd_send_nibble(char x) {
output_bit(lcd_d4, !!(x & 1));
output_bit(lcd_d5, !!(x & 2));
output_bit(lcd_d6, !!(x & 4));
output_bit(lcd_d7, !!(x & 8));
}
void lcd_write(unsigned char x) {
lcd_send_nibble(x>>4);
lcd_strobe();
lcd_send_nibble(x);
lcd_strobe();
delay_us(40);
}
void lcd_init() {
lcd_cmd_on();
delay_ms(15);
lcd_send_nibble(0x3);
lcd_strobe();
delay_ms(5);
lcd_strobe();
delay_us(100);
lcd_strobe();
delay_ms(5);
lcd_send_nibble(0x2);
lcd_strobe();
delay_ms(5);
lcd_write(0x28);
lcd_write(0x08);
lcd_write(0x0F);
lcd_write(0x06);
}
void lcd_clear() {
lcd_cmd_on();
lcd_write(0x1);
delay_ms(2);
}
void lcd_write_string(char *s){
lcd_cmd_off();
while(*s!=0) {
lcd_write(*s++);
}
}
void lcd_write_char(char x){
lcd_cmd_off();
lcd_write(x);
}
void lcd_goto(unsigned char pos)
{
lcd_cmd_on();
lcd_write(0x80+pos);
}
void main(){
lcd_init();
lcd_clear();
lcd_write_char("a");
lcd_write_char("b");
lcd_write_char("c");
lcd_write_char("d");
lcd_goto(40);
lcd_write_char("e");
lcd_write_char("f");
lcd_write_char("g");
lcd_write_char("i");
lcd_clear();
lcd_write_string("Testing the L.C.D.");
lcd_goto(40);
lcd_write_string("This is on Row 2 !");
while(1) {}
}
Executing: "C:\Program files\Picc\CCSC.exe" +FM "lcd_test.c" #__DEBUG=1 +ICD +DF +LN +T +A +M -Z +Y=9 +EA #__16F876A=TRUE
*** Error 90 "lcd_test.c" Line 94(38,39): Attempt to create a pointer to a constant
*** Error 90 "lcd_test.c" Line 96(38,39): Attempt to create a pointer to a constant
2 Errors, 0 Warnings.
Че я делаю не так? Внимательно изучив пример ex_str.c, особенно вызов функции get_num_numbers(char *str) и передачу в нее строки, применил такой же подход к своей поделке. На Си пишу первый раз Кто может объясните где я на грабли наступил.