Код: Выделить всё
temp=(lcd&~(1<<RS))|(1<<E); //RS=0 – это команда
PORTD=temp; //Выводим на portD старшую тетраду команды, сигналы RS, E
asm("nop"); //Небольшая задержка в 1 такт МК, для стабилизации
PORTD=temp&~(1<<E); //Сигнал записи команды
Код: Выделить всё
temp=(lcd&~(1<<RS))|(1<<E); //RS=0 – это команда
PORTD=temp; //Выводим на portD старшую тетраду команды, сигналы RS, E
asm("nop"); //Небольшая задержка в 1 такт МК, для стабилизации
PORTD=temp&~(1<<E); //Сигнал записи команды
Переменная lcd скорей всего в шестнадцатеричной форме. То есть можно поменять в этом шестнадцатеричном коде отдельно какой нибуть байт? RS я так понимаю это нога и какой то бит в регистре мк. Пусть RA1 к примеу. Не пойму как он в 0х... коде изменит какой то бит.Vov123 писал(а):Типа в переменной lcd сбросить бит RS и установить бит E и присвоить всё это добро в переменную temp.
Код: Выделить всё
print_message(A);Код: Выделить всё
/*
ВЫВОД ИНФОРМАЦИИ НА LCD-ДИСПЛЕЙ ОТ NOKIA 1100
*/
#include <p18f14k50.h> /* Подключаем хидеры */
#include <delays.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "lcd1100.h"
// Описываем конфигурацию
#pragma config WDTEN = OFF
#pragma config MCLRE = OFF
#pragma config DEBUG = OFF
#pragma config LVP = OFF
#pragma config IESO = OFF
// биты защиты выключить
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTRB = OFF
typedef unsigned char BYTE;
// Constant declarations
#define CLOCK 8 // частота в МГц
char p[7];
unsigned int PIC_DATA;
unsigned char pic_data_char[4];
void main(void);
void InterruptHandlerHigh(void);
void init (void);
void long_to_string_lz (unsigned int input, char *str, char numdigits);
void long_to_string (unsigned int input, char *str, char numdigits);
void main (void){
init();
Lcd_Init();
while(1)
{
Gotoxy(12,1);
print_message("Frequency");
Gotoxy(12,3);
PIC_DATA++;
itoa(PIC_DATA, pic_data_char);
// sprintf(pic_data_char, %d, PIC_DATA);
print_message(pic_data_char);
Delay10KTCYx(100);
}
}
void init (void){
/*
* Инициализация системы
*/
TRISC = 0b01111111; // PORTC на вход, кроме RC7 - на выход
TRISB = 0; // PORTB на выход
OSCCON = 0x72; // Тактовая частота 8 Мгц
ANSEL = 0; // отключаем АЦП каналы
ANSELH = 0;
return;
}
/*
**************************************************************************************
* long_to_string()
*
* Description : Convert a "long" to a null-terminated string
* (base = decimal)
* Arguments : input = number to be converted
* str = pointer to string (i.e. display buffer)
* numdigits = number of digits to display
* Returns : none
**************************************************************************************
*/
void long_to_string (unsigned int input, char *str, char numdigits)
{
char digit;
int blank = 1;
long_to_string_lz(input, str, numdigits);
for (digit=0; digit < numdigits-1; digit++) {
if (str[digit] == '0') {
if (blank == 1) str[digit] = ' ';
}
else {
blank = 0;
}
}
}
/*
**************************************************************************************
* long_to_string_lz()
*
* Description : Convert a "long" to a null-terminated string, with leading zeros
* (base = decimal)
* Arguments : input = number to be converted
* str = pointer to string (i.e. display buffer)
* numdigits = number of digits to display
* Returns : none
**************************************************************************************
*/
void long_to_string_lz (unsigned int input, char *str, char numdigits)
{
char digit;
for (digit=numdigits; digit > 0; digit--) {
str[digit-1] = (input % 10) + '0';
input = input / 10;
}
str[numdigits] = 0; // null-terminate the string
}
Код: Выделить всё
print_message("A");Код: Выделить всё
print_message('A');Код: Выделить всё
void print_message(const rom char * message)Код: Выделить всё
print_message("A");Код: Выделить всё
PIC_CHAR[0] = 'A';
print_message(PIC_CHAR[0]);в первом случае ожидается нуль - терминированная строка, те равнозначноЧем отличается такая запись:
Код:
print_message("A");
от такой:
Код:
print_message('A');
'A' - это 1 символ, имеющий свой код, т.б. char. А "A" - это уже строка и в функцию передаётся её указатель (char*).Chettuser писал(а):Чем отличается такая запись:от такой:Код: Выделить всё
print_message("A");Код: Выделить всё
print_message('A');
void print_message(const rom char * message)Эхх.. не работаетСинтаксическая ошибка.