پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)
دوستان کسی پیشنهادی نداره ؟؟
دوستان کسی پیشنهادی نداره ؟؟
PORTA=~PORTA;
#include <mega8.h>
#include <delay.h>
#include <io.h>
volatile unsigned char b;
void main(void)
{
PORTB.0 = 1;
PORTB.1 = 1;
DDRD = (0<<DDD0)|(1<<DDD1);
DDRB = (1<<DDB0)|(1<<DDB1);
//UCSRA = (1<<U2X);
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN)|(1<<TXCIE);
UBRRH = 0;
UBRRL = 51; // fosc = 8MHZ , Baud Rate = 9600
#asm ("sei");
delay_ms(1000);
PORTB.0 = 0;
PORTB.1 = 0;
delay_ms(1000);
b=0;
UDR = 0x31;
while (1)
{
if (b!=0)
{
PORTB.0 =~ PORTB.0 ;
while ( !( UCSRA & (1<<UDRE)) );
UDR = b + 1;
delay_ms(100);
b=0;
}
}
}
interrupt [USART_RXC] void USART_RX_Complete (void)
{
PORTB.1 = 1;
b = UDR;
delay_ms(1000);
PORTB.1 = 0;
}
if (b!=0)
#include <mega8.h>
#include <delay.h>
#include <ds18b20.h>
#include <ds1307.h>
#define xtal 8000000
#define DATA PORTD
#define LE PORTC
//////////////////////////////////////////// Config DS18B20 //////////////////////////////////////
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
//////////////////////////////////////////// Config DS1307 //////////////////////////////////////
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=5
.equ __scl_bit=6
#endasm
unsigned char hour,minute,second,devices;
unsigned int j,temp;
const unsigned char adad[]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F,0x63,0x39};
unsigned char data[8];
void main(void){
DDRC=0xFF;
/* initialize the I2C bus */
i2c_init();
/* initialize the DS1307 RTC */
rtc_init(0,0,0);
rtc_set_time(21,01,50);
while(1){
rtc_get_time(&hour,&minute,&second);
//////////////////////////////////////////// Read Hour //////////////////////////////////////
data[0]=adad[hour/10];
data[1]=adad[hour%10];
//////////////////////////////////////////// Read Minute ///////////////////////////////////
data[2]=adad[minute/10];
data[3]=adad[minute%10];
data[6]=adad[10];
data[7]=adad[11];
//////////////////////////////////////////// Showing Time //////////////////////////////////////
for(j=0;j<4;j++){
LE = 0x00;
DATA = data[j];
LE = 0x01 << j;
delay_us(100);
LE = 0x00;
}
delay_ms(50);
//////////////////////////////////////////// Showing Temp //////////////////////////////////////
//////////////////////////////////////////// Read Temp ///////////////////////////////////
devices = w1_init();
//while(devices>0){
temp =ds18b20_temperature(0);
data[4]=adad[temp/10];
data[5]=adad[temp%10];
for(j=0;j<4;j++){
LE = 0x00;
DATA = data[j+4];
LE = 0x01 <<j;
delay_us(100);
LE = 0x00;
}
delay_ms(50);
//}
}
}
#include <mega8.h>
#include <delay.h>
#include <ds18b20.h>
#include <ds1307.h>
#define xtal 8000000
#define DATA PORTD
#define LE PORTC
//////////////////////////////////////////// Config DS18B20 //////////////////////////////////////
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
//////////////////////////////////////////// Config DS1307 //////////////////////////////////////
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=5
.equ __scl_bit=6
#endasm
unsigned char hour,minute,second,devices;
unsigned int j,temp;
const unsigned char adad[]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F,0x63,0x39};
unsigned char data[8];
void main(void){
DDRC=0xFF;
/* initialize the I2C bus */
i2c_init();
/* initialize the DS1307 RTC */
rtc_init(0,0,0);
rtc_set_time(21,01,50);
while(1){
rtc_get_time(&hour,&minute,&second);
//////////////////////////////////////////// Read Hour //////////////////////////////////////
data[0]=adad[hour/10];
data[1]=adad[hour%10];
//////////////////////////////////////////// Read Minute ///////////////////////////////////
data[2]=adad[minute/10];
data[3]=adad[minute%10];
data[6]=adad[10];
data[7]=adad[11];
//////////////////////////////////////////// Showing Time //////////////////////////////////////
for(j=0;j<4;j++){
LE = 0x00;
DATA = data[j];
LE = 0x01 << j;
delay_us(100);
LE = 0x00;
}
delay_ms(50);
//////////////////////////////////////////// Showing Temp //////////////////////////////////////
//////////////////////////////////////////// Read Temp ///////////////////////////////////
devices = w1_init();
//while(devices>0){
temp =ds18b20_temperature(0);
data[4]=adad[temp/10];
data[5]=adad[temp%10];
for(j=0;j<4;j++){
LE = 0x00;
DATA = data[j+4];
LE = 0x01 <<j;
delay_us(100);
LE = 0x00;
}
delay_ms(50);
//}
}
}




temp = (int) ds18b20_temperature(0);
temp = (int) ds18b20_temperature(0);
float ds18b20_temperature(unsigned char *addr);
float FloatTemp; FloatTemp = ds18b20_temperature(0); temp =(int)FloatTemp;
float ds18b20_temperature(unsigned char *addr);
float FloatTemp; FloatTemp = ds18b20_temperature(0); temp =(int)FloatTemp;

#include <mega32.h>
#include "lcd.h"
#include <stdlib.h>
float f()
{
return 1.23;
}
void main(void)
{
int temp;
char str[10];
lcdInit();
ftoa(f(),1,str);
lcdPuts(str); //dar line avval bayad 1.23 namayesh dade shavad
//...............
lcdGotoxy(0,1);
temp=f();
itoa(temp,str);
lcdPuts(str); //dar line dovvom bayad 1 namayesh dade shavad
while(1);
}
#include <mega32.h>
#include "lcd.h"
#include <stdlib.h>
float f()
{
return 1.23;
}
void main(void)
{
int temp;
char str[10];
lcdInit();
ftoa(f(),1,str);
lcdPuts(str); //dar line avval bayad 1.23 namayesh dade shavad
//...............
lcdGotoxy(0,1);
temp=f();
itoa(temp,str);
lcdPuts(str); //dar line dovvom bayad 1 namayesh dade shavad
while(1);
}
دیدگاه