15.09.2007, 09:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Подскажите что за перемена я lcd тут.
Код:
|
struct lcd_pin_map {
short int rs;
short int unused;
short int no;
short int enable;
int data : 4;
} lcd; |
[/quote]
|
|
|
|
15.09.2007, 10:08
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Ну дык это и есть структура .
Это ты обьявляешь шаблон структуры .
Код:
|
struct lcd_pin_map { |
А этим выделяешь память под структуру.
+ указатель на енту структуру.
Код:
|
#include "main.h"
STATIC STRUCT TIME {
INT8 TIK;
INT8 TIK1;
INT8 SEC;
INT8 MIN;
INT8 HOUR;
}TIME,*PTR;
STATIC STRUCT ALARM {
INT8 MIN;
INT8 HOUR;
}ALARM,*PTR_AL;
#int_TIMER2
void TIMER2_isr(void)
{
IF(PTR-›TIK++==100){
PTR-›TIK=0;
IF(PTR-›SEC++==60){
PTR-›SEC=0;
IF(PTR-›MIN++==60){
PTR-›MIN=0;
IF(PTR-›HOUR++==24){
PTR-›HOUR=0;
}}}}
}
void main()
{
PTR=&TIME;
PTR_AL=&ALARM;
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
//setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,249,10);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
PTR_AL-›MIN=4;
WHILE(1){
}
} |
Прикрепленный файл: 5146089.rar
|
|
|
|
15.09.2007, 10:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Круто ![Валяюсь от смеха](images/smilies/icon_biggrin.gif) ,а для чего с указателями работаеш? нельзя было напрямую теме же именами-структур?
|
|
|
|
15.09.2007, 11:11
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
С этими указателями я 2 ночи не спал , я так же как и ты ,С только постигаю.
Решил вот разобраться .Пики пиками но надо расти , заказал АРМы от TI .
|
|
|
|
19.09.2007, 06:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Ночами не сижу,это плохая привычка,лучше хорошо поспать отдохнуть и днем на светлую голову поработать
Чтоб понять что делает функция на си надо смотреть на после компиляции на асем смотреть,тогда все понятно что и куда она делает,так что без асамблера никуда ![Валяюсь от смеха](images/smilies/icon_biggrin.gif)
Я тож пробую авр изучать.
|
|
|
|
19.09.2007, 06:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Почему функция i2c_read(1) не выставляет ack? может она и не должна этого делать ![Бьюсь об стену](images/smilies/icon_obstenu.gif) ,просто когда слэйв устройство считывает байт,он должен потвердить что получил.Если такого нет то придется самому дописывать чтоб выставлял ack.
Это после компиляции код
Код:
|
.................... var_1=i2c_read(1);
016E: BSF 03.5
016F: BTFSS 14.0
0170: GOTO 16F
0171: BCF 03.5
0172: MOVF 13,W
0173: MOVWF 2F |
-- Прилагается рисунок: --
|
|
|
|
21.09.2007, 07:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Подскажите,как передать указатель на структуру в функцию и применить этот указатель в ней,у меня не выходит
Вот такой код прмерно,без инициализации.
Код:
|
#include "C:MOI PROEKTOTLADHIKotladhikmain.h"
#include "my_lcd.c"
#include "SSPCON1.h"
static struct hislo{BYTE tisahi;BYTE dec;BYTE edin;}block_s,var_1_s,var_2_s,*hislo_p;
//функция преобразования числа
void preob(int input,hislo_p)
{
hislo_p-›dec=input/10;
hislo_p-›edin=input-hislo-›dec*10;
}
void main()
{
//масив для преобразования чисел
const BYTE hisla[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x3 9};
//0 , 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
unsigned BYTE block=0,var_1=0,var_2=0,adress; //для шины i2c
const BYTE adress_i2c=0x10;
start:
//считывание адреса слэйв устройства
adress=i2c_read();
if(adress_i2c!=adress)
goto start;
//если сходится выставляем аск
//считывание трех байтов
block=i2c_read(1);
var_1=i2c_read(1);
var_2=i2c_read();
//проверка стопа для уверености
while(P==0)
restart_wdt();
//преобразование чисел под жки
preob(block,&block_s);
//передача на жки
lcd_putc("f BLOCK=");
lcd_send_byte(1,block_s.dec);
lcd_send_byte(1,block_s.edin);
} |
Прикрепленный файл: 1652105.rar
|
|
|
|
21.09.2007, 08:23
|
|
Временная регистрация
Регистрация: 14.09.2006
Сообщений: 58
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 1 сообщении
|
Сообщение от CERGEI1982
|
Подскажите,как передать указатель на структуру в функцию и применить этот указатель в ней,у меня не выходит
Вот такой код прмерно,без инициализации.
Код:
|
#include "C:MOI PROEKTOTLADHIKotladhikmain.h"
#include "my_lcd.c"
#include "SSPCON1.h"
static struct hislo{BYTE tisahi;BYTE dec;BYTE edin;}block_s,var_1_s,var_2_s,*hislo_p;
//функция преобразования числа
void preob(int input,hislo_p)
{
hislo_p-›dec=input/10;
hislo_p-›edin=input-hislo-›dec*10;
}
void main()
{
//масив для преобразования чисел
const BYTE hisla[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x3 9};
//0 , 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9
unsigned BYTE block=0,var_1=0,var_2=0,adress; //для шины i2c
const BYTE adress_i2c=0x10;
start:
//считывание адреса слэйв устройства
adress=i2c_read();
if(adress_i2c!=adress)
goto start;
//если сходится выставляем аск
//считывание трех байтов
block=i2c_read(1);
var_1=i2c_read(1);
var_2=i2c_read();
//проверка стопа для уверености
while(P==0)
restart_wdt();
//преобразование чисел под жки
preob(block,&block_s);
//передача на жки
lcd_putc("f BLOCK=");
lcd_send_byte(1,block_s.dec);
lcd_send_byte(1,block_s.edin);
} |
|
Потому что надо вот так, еще в фукции была ошибка
Код:
|
void preob(int input,struct hislo *hislo_p)
{
hislo_p-›dec=input/10;
hislo_p-›edin=input-hislo_p-›dec*10;
} |
Прикрепленный файл: 1652105.rar
|
|
|
|
21.09.2007, 09:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Спасибо,просто прочитал в книге на работе и все не запомнил.
|
|
|
|
21.09.2007, 09:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
досик взгляни,это отладчик сделал для шины i2c,правда еще не до конца(надо вести цифру сотни,тысячи,та как переменая может больше десятков) ,просто первый раз работаю тоже со структурами ![Валяюсь от смеха](images/smilies/icon_biggrin.gif)
Но кажись при работе со структурами время и код увеличивается,но при этом убодней писать прогу,так?
Прикрепленный файл: 7364881.rar
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:01.
|
|