markdown:
(8)3896.8699-0972924961
le_hieu_29 - 19/03/2012
**13.Pulse period by timer1** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 6.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
// Standard Input/Output functions
#include "stdio.h"
unsigned char ov_counter;
unsigned int starting_edge, ending_edge;
unsigned long clocks;
unsigned int period_out;
bit done = 0;
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Place your code here
++ov_counter;
}
// Timer 1 input capture interrupt service routine
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
// Place your code here
ending_edge = (unsigned int)ICR1H*256 + (unsigned int)ICR1L;
clocks = (unsigned long)ending_edge \
+ ((unsigned long)ov_counter*65536) \
- (unsigned long) starting_edge;
period_out = clocks/750;
done = 1;
ov_counter = 0;
starting_edge = ending_edge;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 750.000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Rising Edge
// Timer 1 Overflow Interrupt: On
// Input Capture Interrupt: On
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x42;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x24;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x26;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
if(done){
printf("Pulse period in ms = %u\n\r", period_out);
done = 0;
}
};
}
**14.ADC_Complete_Int.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
#include "delay.h"
// Standard Input/Output functions
#include"stdio.h"
#define ADC_VREF_TYPE 0x00
// Declare your global variables here
bit adc_done = 0; // Global ADC done flag bit
// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_result;
// Read the AD conversion result
adc_result = ADCW;
// Always clear ADC IF bit
ADCSRA |= 0x10;
// print this value
printf("Done interrupt! ADC value = %d\n\r",adc_result);
// Set done bit
adc_done = 1;
}
// Trigger ADC conversion
void adc_trigger_conv(unsigned char adc_input)
{
// Clear done bit
adc_done = 0;
// Select adc channel
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Don't wait for complete, exist now.
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 115.200 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x8E;
// Global enable interrupts
#asm("sei")
// trigger for the first time
adc_trigger_conv(0);
while (1)
{
// Place your code here
if (adc_done) adc_trigger_conv(0);
delay_ms(1000);
};
}
**15.ADC_Differential.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
#include "delay.h"
// Standard Input/Output functions
#include "stdio.h"
#define ADC_VREF_TYPE 0x00
// User's defines
// Here, we choose ADC0 as Neg Input
// ADC1 as Pos Input
// Gain set to 10x
// Look up on table in datasheet --> MUX4:0 = 0b01001
#define ADC_DIFF_TYPE (0b01001)
// Convert value from ADC data register with its sign (+/-)
int convert_adc_value(unsigned int adc_10bit_input_value)
{
int result;
result = (int)(adc_10bit_input_value & 0x1FF);
result = (adc_10bit_input_value & (1 << 9)) ? (-(512 - result)) : result;
return result;
}
// Read the AD conversion result
int read_diff_adc(void)
{
ADMUX = ADC_VREF_TYPE | ADC_DIFF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned int u16_adc;
int s16_adc;
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 115.200 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
while (1)
{
// Get adc value from ADC register
u16_adc = read_diff_adc();
// Convert to signed int value
s16_adc = convert_adc_value(u16_adc);
printf("ADC value on Diff channel = %d \n\r", s16_adc);
delay_ms(1000);
};
}
**16.ADC_Trigger_By_Int.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
// Standard Input/Output functions
#include "stdio.h"
// User's definitions -------------------------------
// ADSRA register definitions
#define ADEN (1 << 7) // ADC Enable
#define ADSC (1 << 6) // ADC Start Conversion
#define ADATE (1 << 5) // ADC Auto Trigger Enable
#define ADIF (1 << 4) // ADC Interrupt Flag
#define ADIE (1 << 3) // ADC Interrupt Enable
#define ADPS2 (1 << 2) // ADC Prescale bit 2
#define ADPS1 (1 << 1) // ADC Prescale bit 1
#define ADPS0 (1) // ADC Prescale bit 0
// SFIOR register definitions
#define ADTS2 (1 << 7) // ADC Trigger Source bit 2
#define ADTS1 (1 << 6) // ADC Trigger Source bit 1
#define ADTS0 (1 << 5) // ADC Trigger Source bit 0
#define ADTS_MASK (ADTS2 | ADTS1 | ADTS0) // ADC Trigger Source Bits Mask
// GIFR register definitions
#define INT0 (1 << 6) // INT0
#define ADC_VREF_TYPE 0x00
// Global varables -------------------------------
// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
// Read the AD conversion result
adc_data=ADCW;
// Place your code here
printf("Conversion done! Value = %d\n\r",adc_data);
// Clear INT0 flag for next auto trigger by INT0
GIFR = INT0;
}
// Configure ADC channel that conversion will be trigger to
// convert ADC for.
void config_adc_channel(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
}
void main(void)
{
// Declare your local variables here
unsigned char temp;
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: Off
// INT2: Off
GICR=0x00; // Disable INT0 Request to Global Interrupt
MCUCR=0x02; // Falling Edge on INT0
MCUCSR=0x00;
GIFR=0x40; // Clear INT0 Interrupt Flag
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 115.200 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE;
// Enable Auto trigger conversion --------------------------------
ADCSRA = 0x8E | ADATE;
// Configure trigger source --------------------------------------
// Read out and mask ADTS[2..0] bit in the current status of SFIOR
temp = SFIOR & (~(ADTS_MASK));
// Choose External Interrupt 0 (see datasheet)
temp |= ADTS1;
// Write back to SFIOR
SFIOR = temp;
// Must configure ADC channel before using
config_adc_channel(0);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
};
}
**17.ADC_using_LM35.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
#include "delay.h"
#include "stdio.h"
// Standard Input/Output functions
#include "stdlib.h"
#define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned int adc_value; // ADC result
float lm35_voltage; // Voltage on Output of LM35
unsigned int lm35_temp; // Current temperature
char buff[10]; // temp buff hold conversion from float number to string
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 115.200 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
while (1)
{
// Get ADC value
adc_value = read_adc(0);
// Calc to voltage value
lm35_voltage = (float)adc_value*5/1023;
ftoa(lm35_voltage,3,buff);
printf("Voltage on output of LM35: %sV\n\r",buff);
// Calc to temperature - note that LM35 has Linear +10.0 mV/C scale factor
lm35_temp = (unsigned int)((float)adc_value*500/1023 + 0.5);
printf("Current Temperature: %d.C\n\r",lm35_temp);
delay_ms(2000);
};
}
**18.ADC_using_VR.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
// Standard Input/Output functions
#include "delay.h"
#include "stdio.h"
#include "stdlib.h"
#define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
unsigned int adc_value;
float input_voltage;
void main(void)
{
// Declare your local variables here
char buff[10];
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 115.200 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
while (1)
{
adc_value = read_adc(0);
printf("ADC value = %d\n\r",adc_value);
input_voltage = ((float)adc_value*5)/1023;
ftoa(input_voltage, 3, buff);
printf("Input voltage = %sV\n\r", buff);
delay_ms(1000);
};
}
**19.ADC_using_AVR_LEDbar.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
#include "delay.h"
#define ADC_VREF_TYPE 0x00
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned int vr_value; // ADC result of voltage getting from VR.
unsigned long int led_bar_value; // Temp led bar value after calculating.
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 115.200 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
while (1)
{
// Get ADC value on VR - it's connected to ADC0
vr_value = read_adc(0);
// Here, we have 24 leds, so we assume 24 steps or 24 level.
// Note that, the result is always be rounded DOWN, so 0.5 is added to this result.
vr_value = (unsigned int)(((float)vr_value * 24) / 1023 + 0.5);
// we must fill '1' value from 0 to current step
led_bar_value = (1 << ((unsigned long int)vr_value)) - 1;
// Send each byte of this value to each port
PORTB = led_bar_value & 0xFF;
PORTC = (led_bar_value >> 8) & 0xFF;
PORTD = (led_bar_value >> 16) & 0xFF;
// Delay for a while
delay_ms(100);
};
}
**20.TWI_I2C_AT24C1024.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
// Standard Input/Output functions
#include "stdio.h"
// User's defines
// TWCR definitions
#define TWINT (1 << 7)
#define TWEA (1 << 6)
#define TWSTA (1 << 5)
#define TWSTO (1 << 4)
#define TWWC (1 << 3)
#define TWEN (1 << 2)
#define TWIE (1)
// macro used to get TWI return status code
#define TWI_STATUS (TWSR & 0xF8)
// macro used to check int flag
#define TWI_FLAG (TWCR & TWINT)
// Status code defines
// MT mode
#define MT_START 0x08
#define MT_REPEATSTART 0x10
#define MT_SLA_W_ACK 0x18
#define MT_SLA_W_NACK 0x20
#define MT_DATA_ACK 0x28
#define MT_DATA_NACK 0x30
// MR mode
#define MR_START 0x08
#define MR_REPEATSTART 0x10
#define MR_SLA_R_ACK 0x40
#define MR_SLA_R_NACK 0x48
#define MR_DATA_ACK 0x50
#define MR_DATA_NACK 0x58
// Return status defines
#define OK (0)
#define ERROR (1)
// EEPROM Device Address define - 0b10100A1P0
// In this case, A1 is pulled high, so EEPROM Address is (0b10100100 | (P0<
// See Datasheet for more details
#define EEPROM_ADDR (0b10100100)
// EEPROM Page Address define
#define P0_0 (0)
#define P0_1 (1<
unsigned char TWI_SendStart(void)
{
TWCR = TWEN | TWSTA | TWINT;
while(TWI_FLAG == 0);
return TWI_STATUS;
}
unsigned char TWI_WriteData(unsigned char data)
{
// write value to TWDR
TWDR = data;
TWCR = TWEN | TWINT;
while(TWI_FLAG == 0);
return TWI_STATUS;
}
unsigned char TWI_ReadData(unsigned char *data, unsigned char ack)
{
if (ack){
// return ack for next receive
TWCR = TWEN | TWEA | TWINT;
} else {
// return nack
TWCR = TWEN | TWINT;
}
while(TWI_FLAG == 0);
// save data
*data = TWDR;
return TWI_STATUS;
}
void TWI_SendStop(void)
{
TWCR = TWEN | TWSTO | TWINT;
}
unsigned char TWI_SendData(unsigned char slaveaddr, \
unsigned char *dataptr, \
unsigned char len)
{
unsigned char i;
unsigned char *ptr;
ptr = dataptr;
// send start
if (TWI_SendStart() != MT_START) {
printf("Send start error\n\r");
// Send stop now
TWI_SendStop();
return ERROR;
}
// send slave address with write bit
if (TWI_WriteData(slaveaddr) != MT_SLA_W_ACK) {
printf("Send SLA + W error!\n\r");
// Send stop now
TWI_SendStop();
return ERROR;
}
// Send data
for (i = 0; i < len; i++){
if (TWI_WriteData(*ptr++) != MT_DATA_ACK) {
printf("Send data error\n\r");
// Send stop now
TWI_SendStop();
return ERROR;
}
}
// Send stop now
TWI_SendStop();
return OK;
}
unsigned char TWI_ReceiveData(unsigned char slaveaddr, unsigned char *dataptr, unsigned char len)
{
unsigned char i;
unsigned char *ptr;
ptr = dataptr;
// send start
if (TWI_SendStart() != MR_START) {
printf("Send start error\n\r");
// Send stop now
TWI_SendStop();
return ERROR;
}
// send slave address with write bit
if (TWI_WriteData(slaveaddr|0x01) != MR_SLA_R_ACK) {
printf("Send SLA + R error!\n\r");
// Send stop now
TWI_SendStop();
return ERROR;
}
for (i = 0; i < len; i++){
if (i == (len - 1)){
// This is the last data frame - return NACK
if (TWI_ReadData(ptr++, 0) != MR_DATA_NACK) {
printf("Send last data error\n\r");
// Send stop now
TWI_SendStop();
return ERROR;
}
} else {
// Not the last data frame - return ACK
if (TWI_ReadData(ptr++, 1) != MR_DATA_ACK) {
printf("Send data error\n\r");
// Send stop now
TWI_SendStop();
return ERROR;
}
}
}
// Send stop now
TWI_SendStop();
return OK;
}
// Declare your global variables here
/* Data have following format: Most Significant Word Start Address, Least Significant Word Start Address, Data at Start Address, Data at (Start Address + 1), ect... */
unsigned char wr_data[4] = {0x00, 0x00, 0xAA, 0x55};
unsigned char rd_data[4] = {0x00, 0x00, 0, 0};
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// 2 Wire Bus initialization
// Generate Acknowledge Pulse: Off
// 2 Wire Bus Slave Address: 0h
// General Call Recognition: Off
// Bit Rate: 102.400 kHz
TWSR=0x00;
TWBR=0x1C;
TWAR=0x00;
TWCR=0x04;
// Try to write data at address 0x00 in EEPROM
printf("Data will be send: 0x%X 0x%X \n\r", wr_data[2], wr_data[3]);
// Send EEPROM Addr + MSB Word Addr + LSB Word Addr + 0xAA + 0x55
if (TWI_SendData((EEPROM_ADDR | P0_0), wr_data, 4) == OK){
printf("Write data array successfully!\n\r");
}
// Send EEPROM Addr + MSB Word Addr + LSB Word Addr
if (TWI_SendData((EEPROM_ADDR | P0_0), rd_data, 2) == OK){
printf("Write Addr Success!\n\r");
}
// Read data at current addr in EEPROM
// Send EEPROM Addr -> Receive 2 bytes of data
if (TWI_ReceiveData((EEPROM_ADDR | P0_0), rd_data + 2, 2) == OK){
printf("Read data array successfully!\n\r");
}
printf("Read data: 0x%X 0x%X \n\r", rd_data[2], rd_data[3]);
while (1);
}
**21.TWI_I2C_DS1307.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
#include "AT32_TWI.h"
#include "DS1307.h"
#include "delay.h"
// Standard Input/Output functions
#include
// Declare your global variables here
CLOCK_CFG_TYPE clockcfg;
DATE_TYPE datecfg;
TIME_TYPE timecfg;
HOUR_TYPE hourcfg;
char am_str[] = "AM";
char pm_str[] = "PM";
void main(void)
{
// Declare your local variables here
unsigned char temp_data;
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 57600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x07;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
/* Init configuration value ------------------------------------------------------------- */
// Clock config - OUT pin state in this case is unused!
clockcfg.clockout = 1; // Enable clock output
clockcfg.clkfreq = FREQ_1Hz; // 1Hz selected
// Date config - set to Jan-06-2010
datecfg.date = 6;
datecfg.day = WEDNESDAY;
datecfg.month = 1;
datecfg.year = 10;
// Time config - set to 12:04:00AM
timecfg.second = 0;
timecfg.minute = 4;
timecfg.hour = 12;
// Hour type config
hourcfg.hour_12_24 = 1; // 12h mode selected
hourcfg.hour_am_pm = 0; // AM
/* Init RTC DS1307 ---------------------------------------------------------------------- */
printf("Date will be set to %d-%d-%d in dd-mm-yy format\n\r", \
datecfg.date, datecfg.month, datecfg.year);
if (hourcfg.hour_12_24){
printf("Time in 12h mode format\n\r");
printf("Time will be set to %d:%d:%d%s in hh:mm:ss(AM/PM) format\n\r", \
timecfg.hour, timecfg.minute, timecfg.second,\
((hourcfg.hour_am_pm) ? pm_str : pm_str));
} else {
printf("Time in 24h mode format\n\r");
printf("Time will be set to %d:%d:%d in hh:mm:ss(AM/PM) format\n\r", \
timecfg.hour, timecfg.minute, timecfg.second);
}
if (DS1307_Init(&clockcfg, &datecfg, &timecfg, &hourcfg) == OK){
printf("Init DS1307 successfully!\n\r");
} else {
printf("Init DS1307 fail!\n\r");
}
/* Read back date value ----------------------------------------------------------------- */
// Reset date data
datecfg.date = 0;
datecfg.day = SUNDAY;
datecfg.month = 0;
datecfg.year = 0;
if (DS1307_GetDate(&datecfg) == OK){
printf("Get date successfully!\n\r");
printf("Current Date: %d-%d-%d\n\r", \
datecfg.date, datecfg.month, datecfg.year);
} else {
printf("Get date fail!\n\r");
}
/* Demo with accessing to General Purpose RAM in DS1307 --------------------------------- */
// Init data to be sent
temp_data = 100;
printf("Now, write to RAM bank 10 with value = %d\n\r", temp_data);
if (DS1307_WriteRAM(10, temp_data) == OK){
printf("Write value to RAM successfully!\n\r");
} else {
printf("Write value to RAM fail!\n\r");
}
/* Read back value from RAM ------------------------------------------------------------- */
// Clear data
temp_data = 0;
printf("Now, read back value from RAM bank 10\n\r");
if (DS1307_ReadRAM(10, &temp_data) == OK){
printf("Read value from RAM successfully! Data = %d\n\r", temp_data);
} else {
printf("Read value from RAM fail!\n\r");
}
// Reset time data
timecfg.second = 0;
timecfg.minute = 0;
timecfg.hour = 0;
// Reset hour type
hourcfg.hour_12_24 = 0;
hourcfg.hour_am_pm = 0;
//Main loop
while (1){
if (DS1307_GetTime(&timecfg, &hourcfg) == OK){
printf("Current Time: %d-%d-%d%s\n\r", \
timecfg.hour, timecfg.minute, timecfg.second,\
((hourcfg.hour_am_pm) ? pm_str : pm_str));
} else {
printf("Get time fail!\n\r");
}
delay_ms(3000);
}
}
**22.TWI_I2C_MasterSlaveMode.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
#include "delay.h"
#include "AT32_TWI.h"
// Standard Input/Output functions
#include
// User's defines
#define BUT PINB.0
#define LED PORTA.0
// Slave address
#define SLAVE_ADDR 0b10100000
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned char data;
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0
PORTA=0x00;
DDRA=0x01;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 57600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x07;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
TWI_Init();
printf("www.sangthai.com.vn!\n\r");
printf("This is demo for TWI - Master mode\n\r");
while (1){
// Read button state on Master side and send that value to control LED on slave side
data = BUT;
if (TWI_SendData(SLAVE_ADDR,&data,1) == OK){
//printf("Send data OK!\n\r");
} else {
printf("Send data error!\n\r");
}
// Receive data that contains button state on slave side and control LED on master side accordingly
data = 0;
if (TWI_ReceiveData(SLAVE_ADDR,&data,1) == OK){
//printf("Receive data OK!\n\r");
// Drive LED accordingly on master side
LED = data;
} else {
printf("Receive data error!\n\r");
}
// delay a while
delay_ms(100);
}
}
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
#include "AT32_TWI_Slave.h"
// Standard Input/Output functions
#include
// User's defines
#define BUT PINB.0
#define LED PORTA.0
// Declare your global variables here
// 2 Wire bus interrupt service routine
interrupt [TWI] void twi_isr(void)
{
unsigned char twcr_data;
// Check status
switch (TWI_STATUS)
{
/* Slave Receive mode ---------------------------------------------------------- */
// Data has been received and ACK has been returned
case SR_PRE_SLA_W_DATA_ACK:
// Get data out of TWDR and drive led
LED = TWDR;
break;
/* Slave Transmit mode ---------------------------------------------------------- */
// Own Slave address + R has been received and ACK has been returned
case SR_SLA_R_ACK:
// Load data to be sent in next data byte
TWDR = BUT;
break;
/* All remaining case ----------------------------------------------------------- */
default:
// Nothing to do here
break;
}
// Clear TWINT flag, skip TWEN, TWEA and TWIE bit enabled
twcr_data |= TWINT | TWEN | TWIE | TWEA;
TWCR = twcr_data;
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0
PORTA=0x00;
DDRA=0x01;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 57600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x07;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// 2 Wire Bus initialization
// Generate Acknowledge Pulse: On
// 2 Wire Bus Slave Address: 50h
// General Call Recognition: On
// Bit Rate: 102.400 kHz
TWSR=0x00;
TWBR=0x1C;
TWAR=0xA1;
TWCR=0x45;
#asm("sei")
while (1);
}
**23.SPI_HC595.** * Sơ đồ mạch điện.*
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
// Standard Input/Output functions
#include "spi.h"
// SPI functions
#include "stdio.h"
// User's defines
#define LATCH PORTB.0
// Declare your global variables here
void main(void)
{
// Declare your local variables here
unsigned char input_hex;
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=T State2=T State1=T State0=0
PORTB=0x00;
DDRB=0xF1;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 1843.200 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: High
// SPI Data Order: MSB First
SPCR=0x5C;
SPSR=0x00;
LATCH = 0;
while (1){
printf("Enter a hex number: ");
scanf("%x",&input_hex);
spi(input_hex);
LATCH = 1;
LATCH = 0;
}
}
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
*****************************************************/
#include "mega32.h"
#include"delay.h"
// Standard Input/Output functions
#include "stdio.h"
// SPI functions
#include "spi.h"
// SS
#define SS PORTB.0
#define EN 0
#define DIS 1
// Declare your global variables here
unsigned char master_data = 0;
unsigned char slave_data = 0;
void main(void)
{
// Declare your local variables here
unsigned char i;
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xB1;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 1843.200 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x00;
SS = DIS;
while (1){
SS = EN;
printf("Master: Transfer!\n\r");
slave_data = spi(master_data++);
SS = DIS;
printf("Master: Slave data = 0x%X\n\r", slave_data);
delay_ms(2000);
}
}
Chip type : ATmega32
Program type : Application
Clock frequency : 7.372800 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 512
#include "mega32.h"
#include "delay.h"
// Standard Input/Output functions
#include "spi.h"
unsigned char master_data = 0;
unsigned char slave_data = 0;
// SPI interrupt service routine
interrupt [SPI_STC] void spi_isr(void)
{
master_data = SPDR;
SPDR = slave_data++;
// Place your code here
printf("Slave: Master data = 0x%X\n\r", master_data);
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=Out Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=0 State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x40;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// SPI initialization
// SPI Type: Slave
// SPI Clock Rate: 1843.200 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0xC0;
SPSR=0x00;
// Clear the SPI interrupt flag
#asm
in r30,spsr
in r30,spdr
#endasm
// Global enable interrupts
#asm("sei")
SPDR = slave_data++;
while (1);
}
Đăng Nhậphoặc đăng ký thành viênđể chia sẻ,bình luận và tích lũy điểm.

X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.1

Cache-Control: max-age=0, private, must-revalidate

X-Rack-Cache: miss

Server: nginx/0.8.53 + Phusion Passenger 3.0.1 (mod_rails/mod_rack)


markdown:
Trang chủ » chăm sóc da
Giá: 25.000.000 VNĐ
Lượt xem:1318
Bạn biết Ngọc Trinh không? bỏ qua mọi định kiến nhé! bạn sẽ thấy cô ấy đẹp và trắng tuyệt vời.
Bí quyết của cô ấy chính là Titration 1, thành phần làm trắng da mà không gây mất sắc tố Melanin, không gây ung thư da đó các bạn ạ!
Sun Spa chúng tôi đã có phương pháp ấy rồi, và nó sẽ là của bạn - làn da trắng không tì vết ấy - nếu bạn đến với chúng tôi!
Sau liệu trình, bạn sẽ thấy da mình trắng - khỏe - hồng hào, chứ không phải bị trắng bệch hay trắng xanh xao.
Xin giới thiệu với các bạn dòng sản phẩm "Huyết thanh tái tạo da Body" xuất sứ từ Hàn Quốc.
1. Thành Phần: Acid Glycolic, Titration 1, Salicylic Acid, nước cất.
2. Công dụng: các thành phần Glycolic và Salicylic giúp tẩy tế bào da chết sần sùi và sạm đen bên ngoài của bạn, cùng với đó là đẩy mạnh sự tái tạo tế bào da khỏe ở bên dưới. Thành phần Titration 1 là thành phần siêu sao, xuất sắc trong việc ngăn chặn sự nhuộm màu sắc tố da. Melanin vẫn được sinh ra để bảo vệ da chống ung thư, nhưng thoát khỏi sự "nhuộm đen" do kích thích của ánh nắng, nội tiết, hay mỹ phẩm. đó chính là lý do vì sao, làn da sau khi tắm trắng khỏe mạnh, hồng hào mà không hề yếu ớt dễ bắt nắng như các nơi khác.
Sản phẩm sản xuất tại Hàn Quốc, có tem chống hàng giả của Bộ Công An.
3. sản phẩm dưỡng kèm theo: khi đã có làn da đẹp, bạn sẽ muốn giữ mãi đúng không? Sun Spa xin tặng kèm các bạn 3 cặp dưỡng trắng ngày và đêm.
- kem dưỡng ban ngày có cả thành phần chống nắng, giúp làn da tăng chỉ số chống nắng lên, trắng không sợ nắng.
- kem dưỡng da ban đêm có tinh chất làm trắng từ hoa huệ và hoa bưởi, giúp da càng lúc càng trắng hồng tự nhiên.
các bạn muốn tìm hiểu thêm và được tư vấn về sản phẩm và quy trình, vui lòng liên hệ với Ms Trang:0967629003 để được phục vụ tận tình nhất!
300.000VNĐ
290.000 VNĐ/lần
460.000 VNĐ/lần
3.000.000 VNĐ
25.000.000 VNĐ
Tài khoản:
Mật khẩu:
Nhớ mặt khẩu
Quên mật khẩu? Đăng ký gian hàng
Chào mừng:
Lần cuối bạn đăng nhập:
Bấm vào đây để vào gian hàng
Thoát
Đổi mật khẩu Quản trị thông tin
Xem thêm
Đơn vị chủ quản: Công ty cổ phần: Tư vấn và hỗ trợ nghề Việt Nam
Giấy phép kinh doanh số: 0105935681
Giám đốc công ty: Hoàng Xuân Hạnh - Thành viên của Hiệp hội thương mại điện tử Việt Nam
Trụ sở chính: Số nhà 18 ngõ 639 đường Hoàng Hoa Thám, phường Vĩnh Phúc, quận Ba Đình, Hà Nội
Điểm giao dịch và showroom bán hàng: Số 21, ngõ 125 Trung Kính, Yên Hòa, Cầu Giấy, TP Hà Nội
Điện thoại: 043 761 5285 - Hotline: 0912 251 884
E.mail: info@thegioimatxa.net
Website: www.thegioimatxa.net
Kết bạn với thegioimatxa.net trên facebook - Facebook Thế giới massage
Designed by ESVN

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: text/html

Cache-Control: private

Content-Type: text/html; charset=utf-8

X-Powered-By-Plesk: PleskWin

Connection: close


markdown:
![ Chuyện về đại gia có hơn 20.000 căn nhà mặt phố tại Sài Gòn](http://cafef.vcmedia.vn/zoom/660_360/2015/2-bao-tang-my-thuat-tphcm-1-1426493267519.jpg)
Tòa nhà tọa lạc tại số 97, đường Phó Đức Chính, Q1, TPHCM trải qua bao thời gian nhưng vẫn sừng sững với dáng dấp cổ kính, tĩnh lặng, thâm u, càng làm cho những giai thoại về chủ nhân và ngôi nhà thêm phần huyền hoặc. Dù hiện nay đã là trụ sở Bảo tàng Mỹ thuật thành phố nhưng ngôi nhà vẫn chất chứa rất nhiều điều bí ẩn, gợi tò mò bởi nó gắn liền với nhiều huyền thoại cùng tên tuổi một đại phú người Hoa lừng lẫy của Sài Gòn trăm năm về trước.
Chú Hỏa sinh năm 1845, mất năm 1901, hưởng dương 56 tuổi. Ông tên là Hui Bon Hoa hay Jean Baptist Hui Bon Hoa, phiên âm là Hứa Bổn Hỏa, hay còn gọi là Hứa Bổn Hòa.
Chú Hỏa gốc người Minh Hương - nhóm người Hoa rời bỏ Trung Quốc di cư sang nước ta khi triều đình Mãn Thanh tiêu diệt nhà Minh - được chúa Nguyễn cho định cư ở Nam bộ từ thế kỷ 17. Tương truyền, từ hai bàn tay trắng với một gánh ve chai trên vai, chú đã tạo dựng nên sự nghiệp lừng lẫy khiến cho người đời sau còn nhắc.
Là một trong tứ đại hào phú lừng lẫy của Sài Gòn xưa mà dân gian từng tôn vinh: “Nhất Sỹ, nhì Phương, tam Xường, tứ Hỏa” (Huyện Sỹ - Lê Phát Đạt; Tổng đốc Phương - Đỗ Hữu Phương; Bá hộ Xường - Lý Tường Quan và chú Hỏa - Hui Bon Hoa).
Tuy xếp thứ tư nhưng chú Hỏa là người có nhiều huyền thoại và để lại nhiều dấu ấn nhất, trong đó phải kể đến tấm lòng không chỉ thu vén cho riêng mình mà còn biết hướng tới cộng đồng của ông, theo sách ghi chép lại: “tuy làm giàu cho mình đã đành, nhưng cũng giúp ích rất nhiều cho sự mở mang thịnh vượng kinh tế miền Nam”.
![ - Ảnh 1 - Ảnh 1](https://cafef.vcmedia.vn/k:2015/1-chu-hoa-1426493269791/chuyen-ve-dai-gia-co-hon-20000-can-nha-mat-pho-tai-sai-gon.jpg)
Chú Hỏa - Đại gia có hơn 20.000 căn nhà mặt phố tại Sài Gòn là một trong tứ đại hào phú lừng lẫy của Sài Gòn xưa mà dân gian từng tôn vinh: “Nhất Sỹ, nhì Phương, tam Xường, tứ Hỏa”.
**Thành đại gia nhờ mua bán ve chai**
Sinh thời chú Hỏa làm nghề mua bán ve chai, theo nhiều người kể trong một lần thu mua ve chai, chú Hỏa nhặt được cả túi vàng nằm giấu trong một chiếc ghế nệm cũ; người khác nói chú mua được bức tượng đúc đồng nhưng bên trong đầy vàng. Còn theo một số người khác, khi lê la hầu như khắp Sài Gòn - Chợ Lớn để thu mua những thứ bỏ đi của thiên hạ, chú Hỏa đã mua trúng đồ cổ, “chú thạo chữ Hán nên biết trong đám đồ người ta vứt ra có đồ cổ từ thời Nguyên, đời Thanh, thậm chí từ đời Hán”.
Tuy nhiên, việc chú Hỏa phất lên, tạo cơ nghiệp, giàu nứt đố đổ vách lại không phải như lời đồn đãi do ông mua được chuông đồng hay nhặt được túi vàng trong chiếc ghế cũ, hay buôn bán cổ vật mà là nhờ có vốn ban đầu, nhờ có óc nhìn xa, nhạy bén với thương trường và quyết đoán trong công việc cộng với cơ hội đưa đến và biết nắm bắt cơ hội đã làm nên tên tuổi của một Hứa Bổn Hỏa.
Đó là lần ông trúng thầu, mua được 20.000 cái máy truyền tin phế thải của Pháp với giá hời trong lúc những ông chủ thầu khác lại không mặn mòi gì với thứ đồ vật phế thải này vì bề ngoài nó vô giá trị.
Nhưng dưới con mắt của doanh nhân Hứa Bổn Hỏa thì những thứ “vô giá trị” lại biến thành vàng, bởi 20.000 bộ máy truyền tin sau khi phân kim đã cho ông một số lượng vàng rất lớn.
Không chỉ nổi tiếng trong nước, bấy giờ, chú Hỏa còn lừng lẫy khắp Đông Dương không chỉ bởi gia sản kếch sù mà còn bởi sự thức thời. Chú có hơn chục người con thì hầu hết được cho đi du học tại các nước lớn như Anh, Pháp, Đức, Nhật… Được biết, các con chú ai nấy đều học hành thành đạt, mỗi người đều được nhập quốc tịch, được lưu lại làm việc ở nước sở tại.
Theo nhiều người kể, nếu ai có dịp vào nhà chú Hỏa lúc trước giải phóng sẽ nhìn thấy đôi quang gánh đặt trong tủ kính, trưng giữa nhà như vật vừa trang trí, vừa là kỷ niệm thuở hàn vi.
**Trùm nhà đất**
“Đi tàu chú Hỷ, ở nhà chú Hỏa” là câu truyền khẩu nổi tiếng của người Sài Gòn xưa. Nếu như chú Hỷ là ông “vua tàu bè” có tàu Thông Hiệp chạy khắp Nam kỳ - Lục tỉnh lúc bấy giờ thì chú Hỏa là ông “vua nhà đất” với gia sản ước trên 20.000 căn nhà phố khắp khu vực Sài Gòn - Gia Định - Chợ Lớn.
Nhờ số vàng kiếm được từ việc bán 20.000 cái máy truyền tin phế thải, chú Hỏa chuyển sang kinh doanh nhà đất, chiếm lĩnh thị trường bất động sản mà Sài Gòn thời đó hầu như vẫn còn bỏ ngõ. Và chính Hứa Bổn Hỏa chứ không ai khác nhìn ra tiềm năng của một vùng đất hoang phế, còn nhiều ao hồ quanh con rạch ngay trung tâm Sài Gòn đang có kế hoạch sang lấp để xây chợ Bến Thành. Chú Hỏa đã tung tiền ra mua toàn bộ vùng đất mới sang lấp quanh vị trí xây chợ và khi chợ Bến Thành xây xong, Hứa Bổn Hỏa có trong tay 20.000 cái nền nhà thuộc khu đất vàng, và ông lập tức biến nó thành 20.000 căn nhà phố cho thuê để hốt bạc dài dài.
Có được tiền bạc kếch sù, chú Hỏa đầu tư vào lĩnh vực xây dựng, chính “ Công ty của Hứa Bổn Hỏa và các con”, công ty này cực thịnh vào khoảng cuối thế kỷ 19 đầu thế kỷ 20, có những đóng góp rất quan trọng trong việc xây dựng thành phố Sài Gòn.
Theo nhà nghiên cứu Vương Hồng Sển: “Hui Bon Hoa có nhiều con cháu luôn luôn hòa thuận, gia tài giữ nguyên vẹn không chia phần manh mún, chỉ cùng nhau chia lợi tức, và mỗi khi cần dùng số tiền to tát thì người trong họ phải xin chữ ký của người trưởng huynh, khi ấy ngân hàng mới phát bạc. Nhờ giữ gìn có phương pháp cho nên sự nghiệp Hui Bon Hoa ngày càng đồ sộ thêm mãi, không sứt mẻ mảy may nào. Sơ khởi, chú Hỏa nghe đâu hùn hiệp với một người Pháp bao thầu khuếch trương các tiệm cầm đồ (Mont de piété) trong Nam Kỳ. Hiện nay phố xá Sài Gòn một phần lớn là của Công ty Hui Bon Hoa làm chủ. Nhưng công ty này được tiếng là “rất biết điều và không yêu sách, làm khó người mướn phố”.
Không chỉ xây các dinh thự hoành tráng cho gia đình mình, chú Hỏa còn xây những dãy phố, cùng hàng loạt các công trình dân dụng dành cho cộng đồng như bệnh viện, chùa chiền… Trong số các công trình tiêu biểu vẫn được sử dụng cho đến ngày nay có Bảo tàng Mỹ thuật thành phố, khách sạn Majestic, Bệnh viện Từ Dũ, Trung tâm cấp cứu Sài Gòn, Nhà khách Chính phủ, chùa Kỳ Viên, khách sạn Palace - Long Hải…
Majestic là khách sạn đồ sộ bậc nhất thời ấy, được thiết kế theo đồ án của một kiến trúc sư người Pháp. Cũng như Bảo tàng Mỹ thuật hay Nhà khách Chính phủ, Majestic xây dựng theo phong cách Baroque rất được ưa chuộng thời bấy giờ và ngay cả hiện nay, nó mang dáng vẻ kiến trúc cổ châu Âu thời phục hưng, cổ kính và sang trọng bậc nhất Sài Gòn ngay khi xây xong vào năm 1925.
**Dinh thự có 99 cửa**
Nằm ở khu tứ giác đắc địa của Sài Gòn là Phó Đức Chính - Lê Thị Hồng Gấm - Calmette - Nguyễn Thái Bình, hiện tòa nhà được dùng làm Bảo tàng Mỹ thuật thành phố.
Tòa nhà vốn là dinh thự chính của chú Hỏa, được thiết kế rất đẹp và độc đáo theo phong cách Art - déco, kiểu dáng kiến trúc cổ hòa hợp giữa hai trường phái xây dựng Á-Âu, tường nhà được đúc kiên cố, dày từ 40-60cm. Ngôi nhà hiện đã trên trăm tuổi, được xây dựng vào những năm 20 của thế kỷ trước.
Tương truyền khi thiết kế, dinh thự này có một trăm cửa lớn, cửa nhỏ và cửa sổ. Thế nhưng, Toàn quyền Đông Dương khi duyệt thiết kế đã bắt chủ nhân bỏ đi một cửa và không được mở cổng chính với lý do cổng này to hơn cổng Dinh toàn quyền, vậy nên hiện nay dinh thự chỉ có chín mươi chín cửa.
Mặt bằng tổng thể khối nhà hình chữ U, cấu trúc bên trong tòa nhà hiện bao gồm: tầng hầm dành cho khối văn phòng làm việc; tầng trệt dành cho các gallery hoạt động triển lãm và kinh doanh tranh như Không Gian Xanh, Lạc Hồng, Nhật Lệ, Spring…; lầu 1 là nơi trưng bày tranh tượng mỹ thuật; lầu 2 trưng bày các đồ gốm sứ, thủ công mỹ nghệ truyền thống. Chính thức thành lập từ năm 1987, và đưa vào hoạt động năm 1992, cho đến nay số hiện vật được trưng bày tại Bảo tàng Mỹ thuật TP đã lên đến gần 20.000, trên diện tích hơn 4.000m2, đây là nơi lý tưởng để tổ chức các hoạt động triển lãm và sinh hoạt văn hóa nghệ thuật.
Theo
**AN NHIÊN**
Đời Sống Pháp Luật
## 0 nhận xét:
## Cảm nghĩ của bạn
Cảm ơn bạn đã xem bài đăng! Xin cho biết cảm nghĩ của bạn!

Server: GSE

X-Content-Type-Options: nosniff

Cache-Control: private, max-age=0

X-XSS-Protection: 1; mode=block

Content-Type: text/html; charset=UTF-8


markdown:
Tổ chức sinh nhật hàng tháng cho CBCNV là một hoạt động ý nghĩa của Công ty Thuốc lá nguyên liệu Khatoco. Ngày 20/07/2013, tại hội trường công ty diễn ra buổi tiệc sinh nhật dành cho CBCNV có sinh nhật trong tháng 7.
Tổ chức sinh nhật hàng tháng cho CBCNV là một hoạt động ý nghĩa của Công ty Thuốc lá nguyên liệu Khatoco. Ngày 20/07/2013, tại hội trường công ty diễn ra buổi tiệc sinh nhật dành cho CBCNV có sinh nhật trong tháng 7.

WARC-Identified-Payload-Type: application/xhtml+xml

Set-Cookie: language=vi-VN; path=/; HttpOnly


markdown:
: 462
:trắng
:0 tháng
:450,000 VNĐ
: Còn hàng
Tai nghe iPhone 7 (4.7"), iPhone 7 Plus (5.5") chính hãng Chuẩn cắm: lightningHỗ trợ: nghe gọi đàm thoại (có míc), nghe nhạc, điều khiển trình nghe nhạc trên các phím bấm trên taiSản phẩm chính hãng Apple (nguyên hộp)
Tai nghe iPhone 7 (4.7"), iPhone 7 Plus (5.5") chính hãng
Chuẩn cắm: lightning
Hỗ trợ: nghe gọi đàm thoại (có míc), nghe nhạc, điều khiển trình nghe nhạc trên các phím bấm trên tai
Sản phẩm chính hãng Apple (nguyên hộp)

WARC-Truncated: length

Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9 PHP/5.4.16 mod_python/3.5.0- Python/2.7.5

Pragma: no-cache

Cache-Control: cache

Set-Cookie: NVCMS_root=busm35ap5v8qorqd25hnprj305; expires=Sun, 28-May-2017 21:30:30 GMT; path=/

Vary: Accept-Encoding


markdown:
![if !IE]><![endif]>
CÔNG TY Ô TÔ ISUZU VIỆT NAM được thành lập ngày 19 tháng 10 năm 1995, là liên doanh giữa hai công ty Việt Nam: Công ty cơ khí ô tô Sài Gòn (SAMCO), Công Ty Sản Xuất Kinh Doanh Nhập Khẩu Gò Vấp (GOVIMEX) và hai công ty hàng đầu của Nhật Bản: Công ty ô tô ISUZU và tập đoàn ITOCHU. Tôn chỉ của chúng tôi là trở thành công dân tốt của đất nước Việt Nam, góp phần cùng đưa nước Việt Nam đi lên với những chiếc ôtô mang nhãn hiệu ISUZU bền bỉ, kinh tế, phù hợp với mọi gia đình, mọi quy định về giao thông vận tải ở Việt Nam. Những chiếc xe ISUZU đã và đang tung hoành khắp mọi nơi trên thế giới trong suốt hơn 5 thập kỷ qua.
CÔNG TY Ô TÔ ISUZU NHẬT BẢN được thành lập năm 1937, là một trong những nhà sản xuất hàng đầu thế giới về các loại xe thể thao việt dã, xe buýt, xe tải cũng như các loại máy tổng thành. Hoạt động trên phạm vi toàn cầu, ISUZU thực sự nổi tiếng trong việc thiết kế các loại xe với chất lượng siêu hạng, tính năng tuyệt vời. Là dòng xe tải hạng nhẹ bán chạy nhất tại Nhật Bản trong suốt một phần tư thế kỷ qua, Sê-ri N luôn đứng đầu trong các loại xe có tải trọng 2-3 tấn kể từ 1970 đến nay. Trong khi đó, người sử dụng xe ISUZU tại hơn 70 quốc gia đã trở thành những người ủng hộ trung thành cho chất lượng huyền thoại của ISUZU. ISUZU JAPAN đã sản xuất 92.665 xe tải nhẹ hàng đầu thế giới trong năm 1996, đánh dấu mức tăng trưởng hàng năm 2.8%. Công ty cũng đã sản xuất 77.399 chiếc xe có trọng tải từ 6.1-16 tấn và là Công ty sản xuất lượng xe thuộc hạng mục này cao nhất thế giới. Trong 7 năm qua, ISUZU đã năm lần đứng đầu thế giới về số lượng xe tải loại này.
Giấy phép đầu tư số: 16/GPDC3Ngày cấp: October 19th, 1995Tổng vốn đầu tư: USD 50 MillionVốn pháp định: USD 15 Million Tổng diện tích mặt bằng: 70,000 m2 Tổng diện tích xây dựng: 28,666 m2
Các bên góp vốn:1. Tập đoàn cơ khí ô tô Sài Gòn (SAMCO): 20%2. Công ty sản xuất kinh doanh XNK Gò Vấp (GOVIMEX): 10%3. ISUZU MOTOR LIMITED: 35%4. ITOCHU CORPORATION: 35%


markdown:
07/07/2016 00:00 -
Vương Quân Hoàng
Bây giờ ở Hà Nội lại có nhiều quán nước vối, nấu cả nụ lẫn lá. Thế là, thức uống ngàn đời của người Việt mà cách đây gần một trăm năm cụ Nguyễn Công Tiễu, một nhà khoa học hàng đầu về lĩnh vực nông nghiệp, đã có một công trình về giá trị dinh dưỡng của nó sau một hồi thời thế xoay vần đã quay trở lại, bình thường như lẽ sống, sự sống. Nước vối khiêm nhường, nhưng đã đủ khỏe khoắn để vượt qua những thách thức của nước ngọt, đồ uống có ga, những thương hiệu lẫy lừng.
Ảnh chứng minh thư cụ Nguyễn Công Tiễu năm 1921
Đốm sáng?
Trên thế giới, bản thân chữ “nhà khoa học” trong ngôn ngữ thông dụng nhất là tiếng Anh, cũng có lịch sử tương đối ngắn. Trước kia, nhà khoa học được gọi bằng những từ khác, ví dụ: nhà triết học tự nhiên. Tra cứu trên dữ liệu Google thì thấy tần suất sử dụng khái niệm “scientist” chỉ bắt đầu trở nên phổ biến ở giai đoạn sau 1850, tức là khi cách mạng công nghiệp đã đi được chặng đường hơn một thế kỷ. Tính phổ biến của khái niệm này đạt đỉnh cao khoảng thập niên 1970-1980, sau đó có lẽ giảm đi một cách tương đối do sự phân chia sâu các lĩnh vực khoa học hẹp và rất hẹp làm xuất hiện những từ chỉ nghề nghiệp chuyên sâu mới.
Ấy vậy mà nước Việt ta ở đầu thế kỷ XX cũng kịp góp một gương mặt khoa học gia thực thụ - cụ Nguyễn Công Tiễu (1892-1976).
Tư liệu khoa học phổ biến hiện đại thường gắn các loài cây cỏ có dược tính với cố giáo sư Đỗ Tất Lợi với tác phẩm nổi tiếng Những cây thuốc và vị thuốc Việt Nam, tới nay đã tái bản có bổ sung tới 12 lần. Thực tế ấy khiến cho không hẳn ai cũng biết một thực tế người đi tiên phong mở màn là cụ Nguyễn Công Tiễu.
Thông tin về cụ Tiễu không có nhiều, mặc dù rải rác đây đó cũng có lưu chút vết tích về cuộc đời, sự nghiệp.
Cụ là một nhà khoa học chuyên nghiên cứu về nông nghiệp hàng đầu của Việt Nam ngay từ thời Pháp thuộc cho đến thời Việt Nam Dân chủ Cộng hòa, suốt cuộc đời luôn gắn bó với người nông dân và nền nông nghiệp của đất nước.
Khi liệt kê những nhà khoa học thuở bình minh đất nước, thường các bài báo hay gộp chung những danh nhân như cụ Nguyễn Công Tiễu và Hoàng Xuân Hãn vào cùng thế hệ, nhưng có lẽ chưa hẳn phù hợp. Cụ Tiễu tốt nghiệp và bắt đầu nghiên cứu với công trình đầu tay vào năm 1922, trong khi đó giáo sư Hoàng Xuân Hãn mãi tới năm 1930 mới bắt đầu nhập học Bách khoa Paris. Trên thực tế, cụ Tiễu cũng lớn hơn tới 16 tuổi.
Trong khi tìm kiếm tư liệu khoa học, chúng tôi bắt gặp tác phẩm năm 1940 của Auguste Chevalier khẳng định công lao đóng góp những hiểu biết khoa học xác thực đầu tiên của cụ Tiễu về giá trị dinh dưỡng và dược học của cây vối đăng trong Le Paysan de Cochinchine (7 déc. 1939, n° 237).1
Trước đó, báo chí Việt Nam đã có dịp giới thiệu cụ tới công chúng rộng rãi qua sự kiện lần đầu tiên có nhà khoa học Việt Nam được chính thức bổ nhiệm trong Hội đồng Nghiên cứu Khoa học Đông Dương, năm 1929; tin của Hà thành Ngọ báo (ngày 26-12-1929) dưới đây là một ví dụ xác thực.
Một tờ báo cũng hay châm chích các chuyện thế gian thời đó là Thực nghiệp Dân báo trong hai bài cùng xuất bản năm 1933 (S. 70, 13-6-1933), tr. 1; và S. 72, 15-6-1933, tr. 1-2) cũng khẳng định vị trí của cụ Tiễu được công nhận không chỉ là nhà khoa học đầu tiên, mà là “độc nhất” ở Việt Nam ta lúc đó.
Ngay cả trong một bài phê phán quan lại người Pháp qua chuyện diệt ve sầu (được giao cụ Tiễu nghiên cứu cách giải quyết), một trí thức lớn Việt Nam thời đầu thế kỷ XX là cụ Phan Khôi cũng thừa nhận vị trí đứng đầu về khoa học của cụ Tiễu (“Con mắt xanh Phan Khôi”; Báo Quảng Nam, 06-10-2014.).
Bản thân cái tin cụ Tiễu được giao kinh phí 100 đồng để diệt ve sầu cũng làm tốn giấy mực của báo giới Việt Nam lúc đó, như tin dưới đây của Tràng An Báo (30-8-1935).
Ở thời kỳ nền khoa học còn mong manh, chủ yếu áp dụng những kiến thức của người Pháp mang tới, sự xuất hiện và công nhận vai trò nhà khoa học đầu đàn người Việt khiến ta cảm thấy hình ảnh cụ Nguyễn Công Tiễu quả thật là một đốm sáng hiếm hoi trong bầu trời đêm tri thức.
Người đi đầu, dẫn đường...
Những thành tựu và phương pháp, tinh thần khoa học trọn đời của cụ Tiễu đã đóng vai nhà khoa học đầu tiên dẫn “đội quân ánh sáng” Việt Nam bước vào kỷ nguyên hiện đại - chúng tôi đi đến nhận định này sau khi lục lọi rất nhiều, có cả tình cờ lẫn chủ ý.
Sử dụng Google Scholar, chúng tôi tìm được một số tác phẩm (và cũng biết đến được nhiều ấn phẩm khác, dù không có bản sao lưu điện tử mà chỉ tìm được thông tin thư viện), ví dụ:
Tieu, N. C. (1922). Note sur une Cécidomyie du Riz. Bull. Econ. de l’Indochine, 25:590-593; Tieu, N. C. (1928). Notes sur les insectes comestibles au Tokin. Bull. Econ. de l’Indochine, 31, 735-744; Tieu, N. C. (1930). L’Azolle cultivee comme engrais vert. Bull. Econ. de l’Indochine, 33, 335-350.
Đây là các tác phẩm bằng tiếng Pháp, ngôn ngữ quốc tế được trao đổi khoa học rất rộng rãi vào thời kỳ đó, và cũng thường được đọc trích dẫn. Thực tế cho tới tận gần đây, chúng tôi vẫn thấy có những tác giả hiện đại dẫn chiếu đến kiến thức đóng góp từ đầu thế kỷ trước của cụ Tiễu. Nói một cách “tân kỳ” thì chu kỳ sống của sản phẩm tri thức do cụ đóng góp rất bền.
Tuy nhiên, cụ cũng viết và phổ biến kiến thức khoa học cho nông dân, người làm kỹ thuật canh nông qua các tác phẩm vẫn còn nhiều người biết đến như sách Những kỳ quan vũ trụ (1929), Những điều bí mật về bèo hoa dâu (1934)...
Chưa hết, cụ còn đi tiên phong trong việc sản xuất ấn phẩm khoa học, bằng việc sáng lập và làm chủ bút tờ Khoa học Tạp chí của Việt Nam, có lẽ là ấn phẩm khoa học đầu tiên, vào năm 1931. Tạp chí khoa học này ấn hành được 10 năm, ra một tháng hai kỳ (tức là tương đương với Tia Sáng ngày nay) trong điều kiện kỹ thuật, bài vở và đội ngũ khoa học đầy hạn chế và khó khăn. Tạp chí này ấn hành được 232 số, và đình bản vào tháng 8-1941; và hiện nay vẫn được hệ thống tư liệu báo chí ngoại văn Việt Nam lưu giữ thông tin thư viện.2 (Bây giờ vẫn có thể tìm thấy thông tin thư viện của một số tạp chí nhờ dự án số hóa của Google Books: Khoa Học. [Revue scientifique.] Bimensuel. Dir.: Nguyễn Công-Tiễu. 1re année. N° 4, 15 août 1931.)
Có thể thấy tinh thần cống hiến khoa học của cụ Tiễu qua cống hiến suốt đời của cụ. Tuy vậy, còn có thể minh chứng qua một chi tiết. Do làm việc nhiều với kính hiển vi, cụ bị suy giảm thị lực trầm trọng. Đến năm 50 tuổi thì lòa hẳn. Cụ không tuyệt vọng, mà học chữ nổi để tiếp tục nghiên cứu. Đã vậy, tới khi thành thạo, cụ lại còn thành người dạy đọc chữ nổi và có thời kỳ làm chủ tịch Hội người mù, đóng góp trong việc phổ biến kiến thức và đọc sách.
Có thể nói, cụ Tiễu thực sự là người đi đầu dẫn đường, tạo nên phong cách sống, làm việc, cống hiến với tinh thần khoa học rất cao cả, người mà nhà văn hóa Hữu Ngọc khi đã 93 tuổi trao đổi trong bài viết của Trung tâm di sản các nhà khoa học Việt Nam nói: “là ông tổ, là người tiên phong trong truyền bá tri thức khoa học ở Việt Nam.”3
Tuy nhiên, không chỉ báo chí Việt Nam, mà cả hệ thống các cơ quan lưu trữ của Pháp cũng có những tài liệu phong phú, quý hiếm về nhà khoa học Nguyễn Công Tiễu, ví dụ như Agence Bibliographique de l’Enseignement Supérieur.4 Trên thực tế, trong quá trình tìm kiếm thông tin, ba tác phẩm liệt kê ở trên của cụ Tiễu được tìm thấy nhờ truy cập vào trang web lưu trữ của Thư viện Quốc gia Pháp, trong đó chứa gần như trọn vẹn các công trình nghiên cứu đã đăng tải của cụ Tiễu trên tạp chí khoa học rất có giá trị thời đó là Bản tin Kinh tế Đông dương (Bulletin économique de l’Indochine).5
Lại nói chuyện công bố khoa học
Sau khi trình bày một số thông tin và tài liệu xác thực về vai trò tiên phong, ngọn đuốc thắp lên ánh sáng khoa học ở đầu thế kỷ XX tại Việt Nam của cụ Nguyễn Công Tiễu, chúng tôi nhận thấy có mối liên hệ với cuộc thảo luận rộng rãi trong xã hội Việt Nam, cũng như trên diễn đàn khoa học Tia Sáng về vấn đề công bố ấn phẩm khoa học, nhìn từ tấm gương lao động và cống hiến của cụ Tiễu.
Xin nêu lên vài điểm đáng suy nghĩ như sau:
Thứ nhất, từ đầu thế kỷ XX cụ Tiễu đã ngay lập tức hiểu rằng, công bố khoa học quốc tế là công việc quan trọng hàng đầu. Cụ làm công việc ấy ngay từ khi còn rất trẻ, và bền bỉ. Cụ Tiễu cũng hiểu rằng, phải có sự trao đổi, phản biện khoa học thì mới nâng cao được chất lượng. Việc công nhận vai trò nghiên cứu của cụ trong Hội đồng Nghiên cứu Khoa học Đông dương là ghi nhận rõ ràng cho ý thức và công cuộc bền bỉ ấy. Mục tiêu tri thức là quan trọng; cũng chẳng cần ai gọi là giáo sư hay tiến sỹ, hay danh tước gì khác. Nhưng cái bản chất của sản xuất tri thức mới thực chất và đậm đặc làm sao.
Thứ hai, công bố quốc tế giúp việc lưu trữ và bảo tồn thông tin - vốn rất quan trọng với việc sử dụng lâu dài của các thế hệ tương lai - trở nên an toàn, bền vững hơn nhiều. Đó là một giá trị lớn của khoa học hiện đại; trong đó có phần đóng góp của các ấn phẩm và hệ thống tạp chí, sách chuyên khảo... Trên thực tế, nếu không có những ấn phẩm và lưu trữ điện tử, chúng tôi cũng không có cách nào tìm hiểu về cụ Tiễu ngoài một vài dòng thông tin sơ lược ngắn ngủi qua những bài báo.
Thứ ba, đã gần 90 năm trôi qua kể từ những công trình đầu tiên như khảo cứu về bèo hoa dâu, cũng là lúc để thấy sự tri ân với ngọn đuốc khoa học như cụ Tiễu là điều cần thiết; và đó cũng là điều để động viên thế hệ khoa học trẻ tiếp bước. Trong những điều kiện thiếu thốn, khắc khổ và công nghệ hạn chế như vào đầu thế kỷ XX, nhà khoa học như cụ Tiễu còn làm được những việc mà tới thế kỷ XXI, hậu sinh vẫn phải sử dụng, tham khảo, trích dẫn - tới tận năm 2005, chúng tôi vẫn thấy có công trình mới xuất bản sử dụng và trích dẫn thông tin khoa học của cụ Tiễu công bố từ năm 1930, ví dụ 6 - thì chẳng có lý do gì để chúng ta từ chối trách nhiệm nghiên cứu và cọ xát chất lượng, công bố tri thức đứng đắn tới cộng đồng nghiên cứu nói riêng và xã hội nói chung, trong bối cảnh điều kiện kinh tế tốt hơn nhiều, tiện nghi đời sống đầy đủ và phương tiện vật chất thông tin cho khoa học về cơ bản khá sẵn sàng, dồi dào.
Điều đáng tiếc nhất là vẫn chưa thể tìm được một bức ảnh nào của cụ Nguyễn Công Tiễu ngoài bức ảnh ở chứng minh thư.

Set-Cookie: language=en-US; path=/; HttpOnly


markdown:
**Quá nhanh, quá nhiều, quá... nguy hiểm**
Sau 53 tháng 3 ngày thu phí, Công ty cổ phần Phát triển Đại Dương - nhà đầu tư công trình BOT Quốc lộ 18 đoạn Uông Bí - TP. Hạ Long đang rốt ráo hoàn tất những công việc cuối cùng để “đóng gói” dự án: chi trợ cấp thất nghiệp cho 60 lao động sau khi trạm thu phí hoàn vốn tại Km 23+800, Quốc lộ 18 được lệnh ngừng thu.
Điều bất ngờ là khi Dự án BOT Quốc lộ 18 đoạn Uông Bí - Hạ Long dừng thu (ngày 5/5/2016), trên diễn dàn www.otofun.net, cộng đồng những người chơi xe ô tô có hẳn status dài bày tỏ sự tiếc nuối đối với trạm thu phí này. Ngoài việc tiếc cho một trạm thu phí được đánh giá là có mức thu vào loại thấp nhất hiện nay (10.000 đồng/xe tiêu chuẩn/lượt), các thành viên diễn dàn cũng thừa hiểu rằng, trạm Km23 +800, Quốc lộ 18 chắc chắn chưa thể hết sứ mệnh, bởi nó sắp được gán cho một dự án BOT mới với mức thu phí không thể “nhân từ” như hiện nay.
Trên thực tế, trạm thu phí này đã được Tổng cục Đường bộ Việt Nam nhắm “gả” cho một nhà đầu tư khác. Theo đó, Công ty BOT Phả Lại - doanh nghiệp dự án thành phần 2 của Dự án Cải tạo, nâng cấp Quốc lộ 18 đoạn Bắc Ninh - Hạ Long sẽ tiến hành thu phí hoàn vốn tại trạm này chậm nhất là trong tháng 6/2016, với mức thu phí dự kiến cao gấp 3,5 lần mức phí của Dự án BOT Quốc lộ 18 đoạn Uông Bí - Hạ Long.
Ông Nguyễn Văn Thanh, Chủ tịch Hiệp hội Vận tải ô tô Việt Nam chua chát nói, các trạm thu phí BOT ở Việt Nam sẽ không bao giờ mất đi, chỉ chuyển từ chủ đầu tư này sang chủ đầu tư khác mà thôi! Theo thông tin của Báo Đầu tư, trạm Km23+800 sẽ “sống lại” để cùng với hơn 10 trạm thu phí BOT trên các tuyến đường huyết mạch khác đi vào hoạt động từ nay đến tháng 7/2016. Điều này sẽ làm nên đợt “sinh sản” trạm BOT nhiều thứ hai trong vòng 10 năm gần đây.
Được biết, các công trình BOT đã được nhà đầu tư lên kế hoạch thu phí trong dịp này là: trạm Km 1212 +550, Quốc lộ 1 hoàn vốn cho Dự án mở rộng Quốc lộ 1 đoạn Bình Định - Phú Yên; trạm Km1064+730 hoàn vốn cho Dự án mở rộng Quốc lộ 1 đoạn Km1063 +887 - Km1092 +577 qua Quảng Ngãi; trạm Nam cầu Giẽ, Hà Nam hoàn vốn cho Dự án Xây dựng đoạn tránh TP. Phủ Lý và tăng cường mặt đường Quốc lộ 1 đoạn Km215 +775 đến Km235 +885; trạm Cai Lậy, Tiền Giang hoàn vốn cho Dự án mở rộng Quốc lộ 1 đoạn tránh thị trấn Cai Lậy và tăng cường mặt đường Quốc lộ đoạn Km1987+500 - Km2014; trạm thu phí Cà Ná, Ninh Thuận hoàn vốn cho Dự án mở rộng Quốc lộ 1 qua Ninh Thuận; trạm thu phí cầu Cổ Chiên, Quốc lộ 60, tỉnh Trà Vinh hoàn vốn cho Dự án Xây dựng cầu Cổ Chiên; 2 trạm thu phí tại Km 49 +550 và Km108, Quốc lộ 19, qua Gia Lai hoàn vốn cho Dự án Quốc lộ 19...
Ngoài trạm thu phí Nam cầu Giẽ thu 25.000 đồng/xe tiêu chuẩn/lượt, các trạm thu phí khác sẽ thu với mức khởi điểm 35.000 đồng/lượt. Sự xuất hiện đồng loạt của hơn chục trạm thu phí này chắc chắn sẽ tăng áp lực cho các doanh nghiệp vận tải và người dân. Trước đó, trong quý IV/2015, chỉ tính riêng Quốc lộ 1 và Quốc lộ 14 đã có ít nhất 10 trạm thu phí đi vào hoạt động và đồng loạt tăng phí lên 35.000 đồng/xe tiêu chuẩn/lượt vào ngày 1/1/2016.
Cần phải nói thêm rằng, thực hiện quy định về Quỹ Bảo trì đường bộ, Bộ Tài chính đã dừng thu phí 20 trạm, nhưng mức giảm này không thấm tháp gì so với số trạm phát sinh tăng lên từng tháng trong hơn 2 năm qua. Cụ thể, tháng 4/2014, cả nước mới chỉ có 37 trạm thu phí, 2 tháng sau tăng lên 41, đến tháng 7/2015 đã tăng lên 51 và sau tháng 8/2016, nhiều khả năng sẽ tiến sát con số 80 trạm.
Theo các chuyên gia, việc có tới gần 30 trạm thu phí được dựng lên tại các tuyến quốc lộ trên cả nước chỉ trong vòng 1 năm là quá nhanh, quá nhiều, dù sự ra đời của các trạm đều có lý do chính đáng. “Một lượng lớn vốn cấp tập đổ các các dự án BOT giao thông trong 5 năm qua là thành công không thể phủ nhận, nhưng nó lại dẫn tới một hệ lụy là, hàng chục trạm thu phí dồn toa ra đời trong một thời gian rất ngắn, đặc biệt là trên 2 tuyến đường huyết mạch là Quốc lộ 1 và Quốc lộ 14, trong khi cả người dân và doanh nghiệp chưa thực sự sẵn sàng cho tình huống này”, ông Thanh đánh giá.
**Mức phí mặc đồng phục**
Cho đến thời điểm này, cách đánh giá biểu mức phí được áp dụng chung cho các dự án BOT đường bộ vẫn chưa nhận được sự thống nhất của các bộ, ngành. Có một thực tế rất lạ là tại Thông tư số 159/2013/TT hướng dẫn chế độ thu, nộp, quản lý và sử dụng phí sử dụng đường bộ hoàn vốn đầu tư xây dựng đường bộ, đối với loại xe tiêu chuẩn, Bộ Tài chính cho phép áp dụng giải mức thu từ 15.000 đồng đến 52.000 đồng, nhưng không rõ vì lý do gì, hiện có tới 70 - 80% các trạm thu phí đang mặc “đồng phục” mức phí 35.000 đồng/xe/lượt, dù quy mô, chiều dài, chất lượng đường tại dự án hoàn vốn không giống nhau.
Bộ Giao thông – Vận tải (GTVT) cho rằng, không nên quá cứng nhắc đối với quy định về khoảng cách hai trạm thu phí trên cùng một tuyến đường, bởi mức phí áp dụng tại các dự án BOT đường bộ hiện vẫn đảm bảo nguyên tắc lợi ích mang lại cho người sử dụng lớn hơn so với mức phí chi trả cho các nhà đầu tư. Một trong những ví dụ được Bộ đưa ra để chứng minh cho luận điểm này là tại đoạn Pleiku - cầu 110, Quốc lộ 14 đoạn tỉnh Gia Lai, lợi ích mang lại khoảng 244 tỷ đồng/năm, trong khi doanh thu thu phí khoảng 167 tỷ đồng/năm; đoạn qua tỉnh Đắc Nông mang lại khoảng 104 tỷ đồng/năm, doanh thu phí 79 tỷ đồng.
“Trong quá trình xem xét quyết định đầu tư dự án theo hình thức hợp đồng BOT, Bộ GTVT luôn xem xét và cân nhắc giữa lợi ích của việc đầu tư mà người dân được hưởng với khoản phí mà người dân phải đóng”, Thứ trưởng Bộ GTVT Nguyễn Hồng Trường nói.
Bên cạnh đó, hiện cơ cấu các loại vé đường bộ tại nhiều dự án BOT đã được thiết kế theo hướng, ngoài loại vé lượt, tất cả các trạm BOT đều phải bán vé tháng, vé quý cho khách hàng có nhu cầu sử dụng thường xuyên. Đây là loại vé có lợi cho người sử dụng nhiều, đặc biệt là các doanh nghiệp kinh doanh vận tải khách và hàng hóa.
“Nếu đi vé tháng, họ giảm được 1/3 số tiền phải bỏ ra để đi lại, chỉ cần 1 ngày phải 2 lần đi qua trạm là đã mất 70.000 đồng nếu không có vé tháng”, ông Nguyễn Danh Huy, Trưởng ban Quản lý dự án đối tác công tư (Bộ GTVT) phân tích.
Tuy nhiên, theo quan điểm của Bộ Kế hoạch và Đầu tư, mức thu phí chung nêu trên chưa phản ánh đúng bản chất của giá dịch vụ, do với một mức phí chung, người tiêu dùng không được sử dụng dịch vụ như nhau. Bên cạnh đó, khoảng cách giữa các trạm thu phí trên cùng một tuyến đường, theo quy định, phải đạt tối thiểu 70 km, như vậy về nguyên tắc, người tiêu dùng trả phí sẽ được lưu thông tối thiểu là 70 km. Trên thực tế, có nhiều khoảng cách đoạn đường lưu thông ngắn hơn 70 km, nhưng người tiêu dùng vẫn phải trả mức phí chung.
“Điều này tạo điều kiện cho các dự án thu hồi vốn nhanh, nhưng ảnh hưởng đến quyền lợi của người tiêu dùng, chưa tạo ra sự đồng thuận của xã hội”, Bộ Kế hoạch và Đầu tư đánh giá trong Báo cáo gửi Thủ tướng về việc quản lý nhà nước các dự án kết cấu hạ tầng giao thông đường bộ thực hiện theo hình thức BOT trong thời gian vừa qua (Văn bản số 700/BKHĐT - GSTĐĐT ngày 29/1/2016).
Cần phải nói thêm, không chỉ riêng Việt Nam, lợi ích mà người tham gia giao thông được hưởng lớn hơn số phí bỏ ra là thước đo quan trọng nhất để khẳng định một dự án BOT là có ích hay thành gánh nặng cho cộng đồng. Điều đáng tiếc là, vì nhiều lý do, những số liệu phân tích thiệt hơn cho từng công trình BOT để thuyết phục người tham gia giao thông đã không được các cơ quan quản lý quan tâm đánh giá và công bố đầy đủ.
Bên cạnh đó, việc thiếu chuẩn chung mang tính pháp quy cao hoặc không công khai thông tin, kết quả các cơ sở tính phí, nhất là kết quả thẩm định và kiểm toán độc lập, khách quan các số liệu trong dự toán, cũng như trên thực tế trước và sau khi dự án hoạt động dễ tạo kẽ hở cho sự tùy tiện, cho sự lạm dụng. Điều này còn làm nảy sinh những nghi ngại về độ chính xác, hợp lý của mức phí, của thời gian thu phí, đối tượng thu phí.
Theo ông Nguyễn Văn Thanh, đã đến lúc các tiêu chí về trạm thu phí và mức phí tại Thông tư số 159/2013/TT-BTC cần được sửa đổi theo hướng trước khi đặt trạm thu phí và xác định mức phí phải có đánh giá sức chi trả của người dân.
“Quan trọng hơn, khi xem xét một dự án BOT, các cơ quan quản lý nhà nước chỉ phê duyệt khi tổng lợi ích mang lại cho người sử dụng tuyến đường khi được nâng cấp so với tuyến đường chưa được nâng cấp trong năm, tổng lợi ích này không được vượt quá số phí người sử dụng đường phải nộp trong năm và phải công bố, minh bạch cho người dân giám sát”, ông Thanh đề xuất.
Bài viết chưa có bình luận nào. Bạn nên dùng tiếng Việt có dấu khi bình luận.
Nhập bình luận tại đây

Set-Cookie: .ASPXANONYMOUS=95V55d-eMEiPHgnnogJtvqqftPAqksieqWwU68MyXjnfeZr66zGQ04sz3dZ9XiO5toKCbZImGeT6kjBtwtxWgG3-l05WdPkN7OhqbJZsOt79i56amZVHEfvfJk17gB9cpN1gDzlXUBl5gMHoC7CA6A2; domain=tinnhanhchungkhoan.vn; expires=Mon, 31-Jul-2017 06:19:20 GMT; path=/; HttpOnly

Access-Control-Allow-Headers: Content-Type

X-Cache: MISS from xCache11-02


markdown:
[Lịch thi đấu](/world-cup-u20/lich-thi-dau-u20-world-cup-2017.html), [Lịch phát sóng](/world-cup-u20/lich-phat-song-u20-world-cup-2017.html)- [Xem bóng đá trực tuyến](/xem-bong-da-truc-tuyen)- [Link xem bóng đá trực tuyến](/link-xem-bong-da-truc-tuyen)
Xem lại: Juventus vs Sassuolo
**(16/12/2013)**
Với ai không có cơ hội xem trực tiếp trận đấu này, hãy xem lại qua phần tường thuật lại của Cuồng Nhiệt TV bên dưới. Hãy cùng xem nhé.
**Hãy cùng chia sẻ: ** **Bình luận tiếng Anh** **Hiệp 1 ** **Hiệp 2** **Hoặc bạn cũng có thể xem qua server sau với tốc độ và chất lượng phù hợp:** **Tiếp tục cập nhật…**
Hãy tham gia bình luận để chia sẻ ý kiến của bạn.
Để sử dụng, hãy đăng nhập Facebook của bạn và chia sẻ những nhận định, những bình luận về trận đấu mà bạn đang theo dõi hoặc xem lại.
Không: spam, post link, chửi nhau...

Server: cloudflare-nginx

Pragma: public

Cache-Control: max-age=0, no-cache

Set-Cookie: __cfduid=d9b902ce0502979cadd833d10b00ab1431495481767; expires=Tue, 22-May-18 19:36:07 GMT; path=/; domain=.tructiepbongda.com; HttpOnly

X-Powered-By: W3 Total Cache/0.9.5.4