Чт фев 03, 2011 12:29:19
Чт фев 03, 2011 13:15:40
vovik15 писал(а):пжалуста
X |= 0b11110000;
Z &= 0b00001111;
Чт фев 03, 2011 13:24:58
vovik15 писал(а):&=
при накладывании маски &= , в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения, в тех битах, где в маске стоит 1, исходное число не меняется
|=
при накладывании маски |=, в тех битах где в маске стоит 1, биты исходного числа принимают 1, независимо то первоначально значения. В тех битах, где в маске стоит 0, исходное значение не меняется
X &= 0b11110000; /* Читаю текст. "в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения" Значит там где был "0" он там и остался. Там где были "1" , они так и остолись так как они не меняются. В итоге получилось 0b11110000. Тоесть нечё не поменялось.
Чт фев 03, 2011 14:01:09
Чт фев 03, 2011 14:12:59
#include <pic.h>
__CONFIG (XT & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
void podgot (void) // подготовка МК
void podpr (void)
void main (void)
{
podgot()
while (1)
{
podpr(); //функция вызываеться постоянно
if (RA1 == 0)
PORTB = 0b11110000;
else
PORTB = 0;
}
} //конец функции
// === подготовка МК
void podgot (void)
{
TRISA = 0b11111111; // направление работы ножек порта А
TRISB = 0b00000000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1; // подтягивающие R (0-вкл, 1-выкл)
}
void podpr (void)
{
if (RA2 == 0)
PORTB = 0b00001111;
else
PORTB = 0b00000000;
}
Чт фев 03, 2011 14:26:19
#include <pic.h>
__CONFIG (XT & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
void podgot (void); // подготовка МК
void podpr (void);
void main (void)
{
podgot();
while (1)
{
podpr(); //функция вызываеться постоянно
if (RA1 == 0)
PORTB = 0b11110000;
else
PORTB = 0;
}
} //конец функции
// === подготовка МК
void podgot (void)
{
TRISA = 0b11111111; // направление работы ножек порта А
TRISB = 0b00000000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1; // подтягивающие R (0-вкл, 1-выкл)
}
void podpr (void)
{
if (RA2 == 0)
PORTB = 0b00001111;
else
PORTB = 0b00000000;
}
Чт фев 03, 2011 14:36:07
vovik15 писал(а):двоеточие неправильно понаставил смотри как надо
Чт фев 03, 2011 15:14:21
Пт фев 04, 2011 11:13:44
СТОП! Временно прекрати писать программы!misterkuk писал(а):vovik15 писал(а):двоеточие неправильно понаставил смотри как надо
ооо Супер. Терь обьясните, Где ставятся а где нет " ; " ?
Пт фев 04, 2011 13:13:25
ut1wpr писал(а):СТОП! Временно прекрати писать программы!misterkuk писал(а):vovik15 писал(а):двоеточие неправильно понаставил смотри как надо
ооо Супер. Терь обьясните, Где ставятся а где нет " ; " ?
На форуме по принципу "вопрос - ответ" язык, его синтаксис, его тонкости не выучишь. Предполагается первичное самостоятельное изучение материала.
Бегом читать Кернигана и Ричи http://lanzog.narod.ru/liter/kernigan-c/kernigan-c.html. Кодировка UTF-8.
Это авторы языка и эта книга считается классикой. С неё рекомендовано начинать всем. Проста и понятна, как борщ.
Пт фев 04, 2011 14:01:43
Пт фев 04, 2011 14:04:42
Пт фев 04, 2011 14:13:10
Вс фев 06, 2011 18:10:15
Пн фев 07, 2011 01:11:54
#include <htc.h>
#include <pic.h>
#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4433323
#endif
__CONFIG(0x3f02); ///от внутреннего генератора временено
unsigned long freq = 0;
// unsigned int incTMR0 = 0; //кол-во переполнений TMR0
void gotoxy(char datax,char datay);
void out_Spi_LcdCom ( unsigned char data1); // выдача команд на LCD
void out_Spi_LcdDat ( unsigned char data1); // выдача данных на LCD
void print_longint_12_16 (unsigned long int s,char y) ; // печать больших12х16 цифр до 10e6
void char_12_16(char c,char x, char y);
unsigned long int a ;
unsigned int i;
//unsigned char c0,c1,c2,c3,c4,c5,c6,c7,c8,c9;
#define LCD_RESET RB2
#define LCD_CLK RB3
#define LCD_DATA RB0
#define LCD_DC RB1
// cs на корпусе
static const char deg12x16[11][24] = {
// 0x30 - '0'.
// {0x00, 0xF8, 0xFE, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0xFE, 0xF8,
// 0x00, 0x07, 0x1F, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x1F, 0x07},
{ 0x00, 0x07, 0x1F, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x1F, 0x07,
0x00, 0xF8, 0xFE, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0xFE, 0xF8},
// 0x31 - '1'.
// {0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
// 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x3f, 0x3f, 0x30, 0x30, 0x30, 0x00},
{ 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x3f, 0x3f, 0x30, 0x30, 0x30, 0x00,
0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00},
// 0x32 - '2'.
// {0x00, 0x1c, 0x1e, 0x07, 0x03, 0x03, 0x83, 0xc3, 0xe3, 0x77, 0x3e, 0x1c,
// 0x00, 0x30, 0x38, 0x3c, 0x3e, 0x37, 0x33, 0x31, 0x30, 0x30, 0x30, 0x30},
{0x00, 0x30, 0x38, 0x3c, 0x3e, 0x37, 0x33, 0x31, 0x30, 0x30, 0x30, 0x30,
0x00, 0x1c, 0x1e, 0x07, 0x03, 0x03, 0x83, 0xc3, 0xe3, 0x77, 0x3e, 0x1c},
// 0x33 - '3'.
// {0x00, 0x0c, 0x0e, 0x07, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0x7e, 0x3c,
// 0x00, 0x0c, 0x1c, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x1f, 0x0e},
{0x00, 0x0c, 0x1c, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x1f, 0x0e,
0x00, 0x0c, 0x0e, 0x07, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0x7e, 0x3c},
// 0x34 - '4'.
// {0x00, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0xff, 0xff, 0x00, 0x00,
// 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3f, 0x3f, 0x03, 0x03},
{0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3f, 0x3f, 0x03, 0x03,
0x00, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0xff, 0xff, 0x00, 0x00},
// 0x35 - '5'.
// {0x00, 0x3f, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0xe3, 0xc3, 0x83,
// 0x00, 0x0c, 0x1c, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x1f, 0x0f},
{0x00, 0x0c, 0x1c, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x1f, 0x0f,
0x00, 0x3f, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0xe3, 0xc3, 0x83},
// 0x36 - '6'.
// {0x00, 0xc0, 0xf0, 0xf8, 0xdc, 0xce, 0xc7, 0xc3, 0xc3, 0xc3, 0x80, 0x00,
// 0x00, 0x0f, 0x1f, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x1f, 0x0f},
{0x00, 0x0f, 0x1f, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x1f, 0x0f,
0x00, 0xc0, 0xf0, 0xf8, 0xdc, 0xce, 0xc7, 0xc3, 0xc3, 0xc3, 0x80, 0x00},
// 0x37 - '7'.
// {0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xc3, 0xf3, 0x3f, 0x0f, 0x03,
// 0x00, 0x00, 0x00, 0x00, 0x30, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x30, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xc3, 0xf3, 0x3f, 0x0f, 0x03},
// 0x38 - '8'.
// {0x00, 0x00, 0xbc, 0xfe, 0xe7, 0xc3, 0xc3, 0xc3, 0xe7, 0xfe, 0xbc, 0x00,
// 0x00, 0x0f, 0x1f, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x1f, 0x0f},
{0x00, 0x0f, 0x1f, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x39, 0x1f, 0x0f,
0x00, 0x00, 0xbc, 0xfe, 0xe7, 0xc3, 0xc3, 0xc3, 0xe7, 0xfe, 0xbc, 0x00},
// 0x39 - '9'.
// {0x00, 0x3c, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0xfe, 0xfc,
// 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x38, 0x1c, 0x0e, 0x07, 0x03, 0x00},
{ 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x38, 0x1c, 0x0e, 0x07, 0x03, 0x00,
0x00, 0x3c, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0xfe, 0xfc},
// 0x3a - двоеточие.
{0xe0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x61, 0x71, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
//1 2 3 4 5 6 7 8 9 10 11 12
};
//int i=0;
//void piii();
void main(void)
{
// INTEDG = 1; // raising edge trigger the interrupt
GIE = 0; // not Global interrupt enable
// INTE = 0; //not enable the external interrupt RA2/INT pin interrupts.
TRISA=0b000110;
//PORTA=1110;
TRISB=0b11110000; //0-output 1-input
PORTB=0;
LCD_DC=1;
LCD_RESET=1;
__delay_ms(40);
LCD_RESET=0;
__delay_ms(40);
LCD_RESET=1;
out_Spi_LcdCom (0x21) ; // расширенные интсрукции Н=1
out_Spi_LcdCom (0xCF) ;
out_Spi_LcdCom (0x06) ;
out_Spi_LcdCom (0x14) ; // тёмность (0x10-бледно -0x15темно)
out_Spi_LcdCom (0x20) ; // базовые инструкции H=0
out_Spi_LcdCom (0x0C) ; //(0x0C) нормальный режим отображения D=1 E=0 (&h0d- инверсный режим)
out_Spi_LcdCom (0x19) ; //спцфич команда lcd trium aria dont touch
for (i=0;i<900;i++) { out_Spi_LcdDat (0) ; } //очистка экрана
i=0;
while (1==1)
{
a++ ;
TMR1H=0;TMR1L=0;
T1CON=0b00110111 ;// 11 = 1:8 Prescale value;;; 0 = Oscillator is shut off;;; 1 = Do not synchronize external clock input;;;;
//1 = External clock from pin RB6/T1OSO/T1CKI/PGC (on the rising edge);; 1 = Enables Timer1
__delay_ms(10);
T1CON=0b00110110 ;// 0 = disable Timer1(lowers bit)
freq=(long)TMR1H*256;
freq=freq+TMR1L;
freq=freq*100*8;//учитываем предделитель 8
if (TMR1H>127) {goto END_freq_measuring ; }
TMR1H=0;TMR1L=0;
T1CON=0b00100111 ;// 10 = 1:4 Prescale value;;; 0 = Oscillator is shut off;;; 1 = Do not synchronize external clock input;;;;
//1 = External clock from pin RB6/T1OSO/T1CKI/PGC (on the rising edge);; 1 = Enables Timer1
__delay_ms(10);
T1CON=0b00100110 ;// 0 = disable Timer1(lowers bit)
freq=(long)TMR1H*256;
freq=freq+TMR1L;
freq=freq*100*4;//учитываем предделитель 4
if (TMR1H>127) {goto END_freq_measuring ; }
TMR1H=0;TMR1L=0;
T1CON=0b00010111 ;// 01 = 1:2 Prescale value;;; 0 = Oscillator is shut off;;; 1 = Do not synchronize external clock input;;;;
//1 = External clock from pin RB6/T1OSO/T1CKI/PGC (on the rising edge);; 1 = Enables Timer1
__delay_ms(10);
T1CON=0b00010110 ;// 0 = disable Timer1(lowers bit)
freq=(long)TMR1H*256;
freq=freq+TMR1L;
freq=freq*100*2;//учитываем предделитель 2
if (TMR1H>127) {goto END_freq_measuring ; }
TMR1H=0;TMR1L=0;
T1CON=0b00000111 ;// 00 = 1:1 Prescale value;;; 0 = Oscillator is shut off;;; 1 = Do not synchronize external clock input;;;;
//1 = External clock from pin RB6/T1OSO/T1CKI/PGC (on the rising edge);; 1 = Enables Timer1
__delay_ms(10);
T1CON=0b00000110 ;// 0 = disable Timer1(lowers bit)
freq=(long)TMR1H*256;
freq=freq+TMR1L;
freq=freq*100;//учитываем предделитель 1
if (TMR1H>127) {goto END_freq_measuring ; }
TMR1H=0;TMR1L=0;
T1CON=0b00000111 ;// 00 = 1:1 Prescale value;;; 0 = Oscillator is shut off;;; 1 = Do not synchronize external clock input;;;;
//1 = External clock from pin RB6/T1OSO/T1CKI/PGC (on the rising edge);; 1 = Enables Timer1
__delay_ms(20);
T1CON=0b00000110 ;// 0 = disable Timer1(lowers bit)
freq=(long)TMR1H*256;
freq=freq+TMR1L;
freq=freq*50;//учитываем предделитель 1
if (TMR1H>127) {goto END_freq_measuring ; }
TMR1H=0;TMR1L=0;
T1CON=0b00000111 ;// 00 = 1:1 Prescale value;;; 0 = Oscillator is shut off;;; 1 = Do not synchronize external clock input;;;;
//1 = External clock from pin RB6/T1OSO/T1CKI/PGC (on the rising edge);; 1 = Enables Timer1
__delay_ms(40);
T1CON=0b00000110 ;// 0 = disable Timer1(lowers bit)
freq=(long)TMR1H*256;
freq=freq+TMR1L;
freq=freq*25;//учитываем предделитель 1
if (TMR1H>127) {goto END_freq_measuring ; }
//freq=12345678;
END_freq_measuring:
print_longint_12_16 (freq,0);
print_longint_12_16 (a,48);
print_longint_12_16 (TMR1H,32);
//{
// if (a> 15000000) // при 4х Мгц- 50000= 1.3 сек
// {
//PORTA=0;
//
// #asm
// SLEEP
// #endasm
// }
}
}
/////- ПРОЦЕДУРЫ=======================
//=====================
//static void interrupt
//isr(void) // Here be interrupt function - the name is unimportant.
//{
// if(T0IF) {} // timer interrupt
//
// if(INTF) {} // input interrupt
//
// INTF = 0; // clear the interrupt
// GIE = 1; // Global interrupt enable
// }
//static void interrupt
//isr(void)
// { //обработка прерываний
//
// if (INTCON.T0IF) { //если TMR0 увеличить перем. прерываний
// incTMR0++;
// INTCON.T0IF = 0;
// }
// if (PIR1.TMR1IF) { //если TMR1 увеличить перем прерываний
// timerH++; PIR1.TMR1IF = 0;
// }
// }
//=== Send byte to LCD ===
// cd: 1 - data, 0 - command
void out_Spi_LcdCom ( unsigned char data1) // передаём команды
{
LCD_DC=0;
LCD_DATA =data1>>7;
LCD_CLK =0;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>6) &0b1;
LCD_CLK =0;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>5) &0b1;
LCD_CLK =0;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>4) &0b1;
LCD_CLK =0;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>3) &0b1;
LCD_CLK =0;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>2) &0b1;
LCD_CLK =0;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>1) &0b1;
LCD_CLK =0;
LCD_CLK =0;
LCD_CLK =1;
LCD_CLK =1;
LCD_DATA =(data1>>0) &0b1;
LCD_CLK =0;
LCD_CLK =0;
LCD_CLK =1;
LCD_CLK =1;
LCD_DC=1;
LCD_DATA =0;
}
void out_Spi_LcdDat ( unsigned char data1) // передаём данные
{
LCD_DC=1;
LCD_DATA =data1>>7;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>6) &0b1;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>5) &0b1;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>4) &0b1;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>3) &0b1;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>2) &0b1;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>1) &0b1;
LCD_CLK =0;
LCD_CLK =1;
LCD_DATA =(data1>>0) &0b1;
LCD_CLK =0;
LCD_CLK =1;
LCD_DC=1;
LCD_DATA =0;
}
void gotoxy(char datax,char datay)
{
out_Spi_LcdCom (0x00);
out_Spi_LcdCom (0x80+datax); //устанавливаем X
out_Spi_LcdCom (0x40+(datay >>3)); // устанавливаем номер строки(№BAnk)
}
//
//void print_char(char c)
//{
// unsigned char i;
//
// for ( i = 0; i < 5; i++ ){
// out_Spi_LcdDat (FontLookup[c] [i] );
// }
// out_Spi_LcdDat(0x00);
// }
void print_longint_12_16 (unsigned long int s,char y)
{
unsigned char x,c9,c8,c7,c6,c5,c4,c3,c2,c1,c0;
c9=0;c8=0;c7=0;c6=0;c5=0;c4=0;c3=0;c2=0;c1=0;
while (s>=1000000000){s-=1000000000;c9++;}
while (s>=100000000){s-=100000000;c8++;}
while (s>=10000000){s-=10000000;c7++;}
while (s>=1000000){s-=1000000;c6++;}
while (s>=100000){s-=100000;c5++;}
while (s>=10000){s-=10000;c4++;}
while (s>=1000){s-=1000;c3++;}
while (s>=100){s-=100;c2++;}
while (s>=10){s-=10;c1++;}
c0=s;
x=0;
// char_12_16(c9,x,y);
// x=x+12;
// char_12_16(c8,x, y);
// x=x+12;
char_12_16(c7,x, y);
x=x+12;
char_12_16(c6,x,y);x=x+12;
char_12_16(c5,x, y); x=x+12;
char_12_16(c4,x, y); x=x+12;
char_12_16(c3,x,y);
out_Spi_LcdDat(0x00); // пропуск
x=x+14; char_12_16(c2,x,y);
x=x+12; char_12_16(c1,x,y);
x=x+12; char_12_16(c0,x,y);
}
void char_12_16(char c,char x, char y) //выдача двухстрочного чарсета
{
unsigned char sj;
gotoxy(x,y);
for ( sj = 0; sj < 12; sj++ )
{
out_Spi_LcdDat(deg12x16[c][sj]);
}
gotoxy(x,y+8);
for ( sj = 12; sj < 24; sj++ )
{
out_Spi_LcdDat(deg12x16[c][sj]);
}
}
Пн фев 07, 2011 08:31:58
Пн фев 07, 2011 08:37:41
vovik15 писал(а):какой компилятор? какой микроконтроллер? и вообще ссылка на схему есть?
Пн фев 07, 2011 10:45:07
Вт фев 08, 2011 22:42:42
Вт фев 08, 2011 23:00:29