Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 14.07.2011, 22:03  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Для какого компилятора эти программы?

Для какого компилятора эти программы?

PHP код:
#include ‹pic.h›
#define serial_error()        OERR 
#define nostop()              FERR 
#define serial_fix()        {CREN = 0; CREN = 1;} 
#define vbod 9600 
#define SPBRG_ ((10240000/vbod) -16)/16
#fuse HS,NOWDT,PUT,BROWNOUT,MCLR,NOLVP,NOCPD,NOPROTECT
//__CONFIG(0x03F72);

unsigned char a=0b=0e=0;
volatile char c=0send=0;
long unsigned int counter=0;

interrupt void tajm(void
{
//----------------------------------------     
if (TMR0IFTMR0IE
    { 
        
T0IF=0;
        
ADGO=1;
        while(
ADGO==1)
        {
        }
        
a=ADRESL;
        
b=ADRESH;
        
GIE=1;
    } 
//------------------------------------------ 
if (RCIF && RCIE)
    {
    if(
serial_error()) serial_fix();
    if (
nostop()) RCREG;
        
c=RCREG;
        
send=1;
         
RCIF=0;
    }
}

void main(void)
{
    
TMR0=0;
    
OPTION0b11010000//таймер 1:2
    
T0IE=1;   //разрешаем прерывания от таймера
    
GIE=1;

    
TRISB=0;
    
PORTB=200;

    
ADCON1=0b10001110
    
ADCON0=0b10000001;

        
SPEN=1;//разрешение работы последовательного порта 
        
SYNC =0;//включение асинхронного режима работы 
        
TX9=0// выбираем 8 - битовую передачу 
        
RX9=0// выбираем 8 - битовый прием 
        
BRGH =1;//включаем высокоскоростной режим 
        
SPBRG=SPBRG_;// устанавливаем скорость обмена     
        
TXEN=1;// не люблю я ножек в 3 состоянии.... 
        
TXIE=0;//запрещаем прерывания от передатчика  
        
CREN =1
        
// разрешаем прерывания от приемника  
        
RCIE=1;

    
TRISD=1;
    
PORTD=0;

    while(
1==1)
    {
        if(
send)
        {
            
send=0;
            if (
c==1)
            {
                
TXREG=10;
            }
            if (
c==2)
            {
                
TXREG=a;
            }
            if (
c==3)
            {
                
TXREG=b;
            }
            if (
c==4)
            {
                
TXREG=c;
            }
        }
    }

PHP код:
#include ‹pic.h›
 
__CONFIG(0x03f54);
 
 
// Определение портов контроллера /

/#define out RA2 /*Выход термостата*/

#define D_PIN RA4 /*сигнал термометра*/
 #define D_TRIS TRISA4
 #define digit1 RA6 /*индикатор 1*/
 #define digit2 RA7 /*индикатор 2*/
 #define digit3 RA0 /*индикатор 3*/
 #define digit4 RA1 /*индикатор 4*/

#define indic PORTB /*сигменты индикатора*/

//Описание переменных и битов//

 
char c_indic//счетчик разрядов индикатора//
 
bit f_time,r_time//флаг таймаута = 2,5мс//
 
static bit convert_t,c_read

 
unsigned char ind_data1,ind_data2,ind_data3,ind_data4,data_t,D_E  rror,t_data1,t_data2;
 
signed char data_temp
 
unsigned char data_t,time_read;
 
unsigned int time_out;
 
// Описание прототипов функций //
 
void init(void);
 
void indicacia(void);
 
void D_Reset(void);
 
void D_Write(unsigned char);
 
char D_Read(void);
 
void delay_5(void);
 
void delay_10(void);
 
void delay_60(void);
 
void delay_420(void);
 
void delay_480(void);
 
void data_displ(unsigned char,unsigned char);
 
char bcd_lcd(char);

void main(void)
 { 
init();
 while(
1)
 { 
CLRWDT();
 if(
f_time)
 { 
f_time=0;
 
indicacia();
 if(
c_read==1) { di();
 
t_data1=D_Read();
 
t_data2=D_Read();
 
ei();
 
data_displ(t_data1,t_data2);
 
r_time=0;
 
convert_t=0;
 
c_read=0;
 continue;
 }
 
di();
 
D_Reset();
 
ei();
 if(
D_Error==1) { ind_data4=0b10101100;
 
ind_data3=0b11100100;
 
ind_data2=0b10100110;
 
ind_data1=0b00100101;
 continue;
 } 
 if(
D_Error==2) { ind_data4=0b00101100;
 
ind_data3=0b11100110;
 
ind_data2=0b10111110;
 
ind_data1=0b10111100;
 continue;
 }
 
di(); 
 
D_Write(0xCC); 
 
ei();
 if(
convert_t==0) { di();
 
D_Write(0x44);
 
ei();
 
convert_t=1;
 
time_read=0;
 
r_time=0;
 continue;
 }
 if((
r_time)&(convert_t)&(D_PIN)){ di();
 
D_Write(0xBE); 
 
ei();
 
c_read=1;
 continue; 
 }
 continue; 
 }
 }
 }


 
void init(void)
 {
 
// Инициализация портов контроллера 
 
PORTA=0x04;
 
CMCON=0x07;
 
TRISA=0x38;
 
PORTB=0xff;
 
TRISB=0x00;

 
// Сброс и запрет всех прерываний кроме TMR0
 
INTCON0b00100000;
 
PIE1 0b00000000;
 
PIR1 0b00000000;

 
// Инициализация частоты генератора
 
PCON 0b00001000;

 
// Инициализация таймера 0
 
OPTION =0b00000111;
 
TMR0=236;
 
GIE=1;

 
//Инициализация переменных
 
f_time=0;
 
c_indic=0x00;
 
convert_t=r_time=c_read=0;
 
ind_data1=0b10101100;
 
ind_data2=0b11111111;
 
ind_data3=0b00001111;
 
ind_data4=0b00111100;
 }
 
// Функция вызова прерывания 
 
void interrupt time (void)
 { if((
T0IE==1) && (T0IF == 1))
 { 
T0IF=0;
 
TMR0=240;
 
f_time=1;
 if(
convert_t==1)
 { 
time_read++;
 if(
time_read==0)
 {
 
r_time=1;
 }
 }
 }
 } 

// Динамической индикации 
 
void indicacia(void)
 { 
digit1=0;
 
digit2=0;
 
digit3=0;
 
digit4=0;
 
c_indic++;
 if(
c_indic3) { c_indic=0;}
 switch(
c_indic)
 { case 
0indic=ind_data1;
 
digit1=1;
 break;
 case 
1indic=ind_data2;
 
digit2=1;
 break;
 case 
2indic=ind_data3;
 
digit3=1;
 break;
 case 
3indic=ind_data4;
 
digit4=1;
 return;
 }
 }
 
// Преобразование данных с датчика в данные индикатора 
 
void data_displ(unsigned char displ_d1,unsigned char displ_d2)
 { static 
bit znak;
 
char msd,bsd,dst;
 
signed int temper,displ_d,lsd;
 
temper=0;
 
temper=displ_d2;
 
temper‹‹=8;
 
temper|=displ_d1;
 if(
temper0)
 { 
znak=1;
 
temper=~temper+1;
 }
 else
 {
znak=0;
 }
 
displ_d=temper*10/16;
 
msd=bsd=dst=0;
 
lsd=displ_d;
 while (
lsd›=10)
 { if((
lsd-10)›=0)
 { 
msd++; lsd-=10;
 }
 if((
msd-10)›=0)
 { 
bsd++;
 
msd-=10;
 }
 if((
bsd-10)›=0)
 { 
dst++;
 
bsd-=10;
 }
 }
 
ind_data4=bcd_lcd(lsd);
 
ind_data3=bcd_lcd(msd);
 
ind_data2=bcd_lcd(bsd);
 
ind_data1=bcd_lcd(dst);

 if (
znak) {ind_data1=0b11101111;}
 if(
dst==0){if (bsd==0){if(msd==0){if(lsd==0){ind_data1=ind_data2  =ind_data3=0b11111111;} 
 else{if(
znak){ind_data3=0b11101111;}else{ind_data3  =0b11111111;}
 
ind_data1=ind_data2=0b11111111;
 }
 }
 else {if(
znak){ind_data2=0b11101111;}else{ind_data2=0b1  1111111;}
 
ind_data1=0b11111111;
 }
 }
 else{if(
znak){ind_data1=0b11101111;}else{ind_data1  =0b11111111;}
 }
 }
 if((
dst==0)&(bsd==0)&(msd==0)&(lsd!=0)){ind_data3=0b00010000;}
 else {
ind_data3&=0b11111011;}
 }
 
//**************************************************  *********
 
char bcd_lcd(char d_lcd)
 {
 switch(
d_lcd)
 { case 
0: return 0b00010100;
 case 
1: return 0b11010111;
 case 
2: return 0b01001100;
 case 
3: return 0b01000101;
 case 
4: return 0b10000111;
 case 
5: return 0b00100101;
 case 
6: return 0b00100100;
 case 
7: return 0b01010111;
 case 
8: return 0b00000100;
 case 
9: return 0b00000101;
 }
 return 
0b00000000;
 }

bit D_Presence
 
bit D_ShortCircuit
 
bit D_Data

 

void D_Reset(void)
 {
 
D_Error=0
 
D_TRIS=1;
 
D_PIN=0
 
D_TRIS=0;
 
delay_480();
 
D_TRIS=1
 
delay_60();
 
D_Presence=D_PIN;
 
delay_420(); 
 
D_ShortCircuit=D_PIN;
 if(
D_ShortCircuit==0
 {
 
D_Error=1;
 }
 if(
D_Presence==1
 {
 
D_Error+=2;
 }
 
delay_10(); 
 }


 
void D_Write(unsigned char Data)
 {
 
char count=8;
 for(;
count0;count--)
 {
 
D_DataData 0x01
 
D_PIN=0
 
D_TRIS=0;
 
NOP(); 
 
NOP();
 
NOP();
 
NOP();
 
D_TRIS=D_Data;
 
delay_60(); 
 
D_TRIS=1;

 
delay_10(); 
 
Data=Data››1;
 }
 
delay_10(); 
 }
 
char D_Read(void)
 {
 
char count=8,data=0;
 for(;
count0;count--)
 { 
 
D_PIN=0;
 
D_TRIS=0;
 
NOP();
 
NOP();
 
NOP();
 
D_TRIS=1;
 
delay_10(); 
 
D_Data=D_PIN;
 
delay_60();
 
data data ›› 1;
 if(
D_Data==1)
 {
 
data +=0x80;
 }

 
delay_10();
 }
 
delay_10(); 
 return(
data);
 }


 
void delay_10(void)
 { 
char i=2;
 while (--
i!=0){}
 }
 
void delay_60(void)
 {
char i=18;
 while (--
i!=0){}
 }
 
void delay_420(void)
 {
char i=138;
 while (--
i!=0){}
 }
 
void delay_480(void)
 {
char i=158;
 while (--
i!=0){}
 } 
Первую откомпилировал через MPLAB IDE v8.56 с настройкой на C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe (что это??? CCS-PICC или C30).
А вторая наверно на mikroC написана?
Какой из компиляторов С для PIC посоветуете?
Вложения:
Тип файла: rar 1.rar (2.8 Кб, 47 просмотров)
Реклама:

Последний раз редактировалось Slava-martyn; 14.07.2011 в 22:07.
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 14.07.2011, 22:09  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

Slava-martyn, Обе Hi-Tech Picc.
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (28.06.2019)
Непрочитано 14.07.2011, 22:10  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

А по нему учебники есть?
И что вот с этим делать? (для второго файла)
(1273) Omniscient Code Generation not available in Lite mode (warning)
HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.71a
Copyright (C) 2010 Microchip Technology Inc.
Error [939] ; . no file arguments

Последний раз редактировалось Slava-martyn; 14.07.2011 в 22:26.
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 14.07.2011, 22:18  
XoDoK11
Гражданин KAZUS.RU
 
Аватар для XoDoK11
 
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
XoDoK11 на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

Сообщение от Slava-martyn Посмотреть сообщение
А по нему учебники есть?
Практически нет.Только HELP. На русском была только брошюра.

Последний раз редактировалось XoDoK11; 14.07.2011 в 22:32.
XoDoK11 вне форума  
Сказали "Спасибо" XoDoK11
warel (28.06.2019)
Непрочитано 14.07.2011, 22:19  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

Сообщение от Slava-martyn Посмотреть сообщение
А по нему учебники есть?
Учебник по чему ?????????
По языку С ???
По компилятору есть мануал в папке установки.
Но судя по вопросу вам нужно расжеванное с картинками , наподобие
мануала от микрос ???
Он вам не нужен . Читайте классиков . Штудируйте чужие примеры .
Все вопросы отпадут сами собой...
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (28.06.2019)
Непрочитано 14.07.2011, 22:27  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

По C всё более-мене понятно.
А что вот с этим делать? (для второго файла)
(1273) Omniscient Code Generation not available in Lite mode (warning)
HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.71a
Copyright (C) 2010 Microchip Technology Inc.
Error [939] ; . no file arguments
Я так понял надо Hi-Tech Picc нормальный искать, а там всё что надо будет на английском.

Последний раз редактировалось Slava-martyn; 14.07.2011 в 22:37.
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
Непрочитано 14.07.2011, 22:35  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

Сообщение от Slava-martyn Посмотреть сообщение
in Lite mode
Надо начинать учить язык ( английский) .
У вас лайт ( облегченная) версия компилятора .
Так же есть STD и PRO ...
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
warel (28.06.2019)
Непрочитано 14.07.2011, 22:36  
XoDoK11
Гражданин KAZUS.RU
 
Аватар для XoDoK11
 
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
XoDoK11 на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

Сообщение от Slava-martyn Посмотреть сообщение
А что вот с этим делать? (для второго файла)
(1273) Omniscient Code Generation not available in Lite mode (warning)
Найти PRO-версию.
XoDoK11 вне форума  
Сказали "Спасибо" XoDoK11
warel (28.06.2019)
Непрочитано 14.07.2011, 23:42  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

Сообщение от Slava-martyn Посмотреть сообщение
(1273) Omniscient Code Generation not available in Lite mode (warning)
На это можно забить. Он просто сообщает, что недоступна мегаоптимизация.
Цитата:
Error [939] ; . no file arguments
Вы си-файл в проект не добавили (меню "Projec/Add files to project...").
testerplus вне форума  
Эти 2 пользователя(ей) сказали Спасибо testerplus за это сообщение:
Slava-martyn (15.07.2011), warel (28.06.2019)
Непрочитано 15.07.2011, 00:29  
Slava-martyn
Вид на жительство
 
Аватар для Slava-martyn
 
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
Slava-martyn на пути к лучшему
По умолчанию Re: Для какого компилятора эти программы?

Вот теперь добавил, только что-то всё равно не так.
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.70
Copyright (C) 2009 Microchip Technology Inc.
Serial number: **** (PRO)
Warning [750] F:\PICprog\DSPIC\1.c; 236. constant operand to || or &&
Error [712] F:\PICprog\DSPIC\1.c; 48. can't generate code for this expression

********** Build failed! **********

48 -===›
if((r_time)&(convert_t)&(D_PIN)){ di();
D_Write(0xBE);
ei();
c_read=1;
continue;
}

236 -===›
D_Data= Data & 0x01;

Последний раз редактировалось Slava-martyn; 15.07.2011 в 00:32.
Slava-martyn вне форума  
Сказали "Спасибо" Slava-martyn
warel (28.06.2019)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Апгрейд и комплектующие для ноутбуков mikesmith Барахолка электронных компонентов 28 17.05.2023 23:25
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49


Часовой пояс GMT +4, время: 03:12.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot