มีท่านใดที่มี Raspberry pi 3 ไม่ได้ใช้ อยู่บนหิ้งดองไว้ อยากจะปล่อย ติดต่อได้ ครับ
ไลน์: ph_sarawut
โทร: o๘๖-๔๔๘-๘๕๖๖
ไลน์: ph_sarawut
โทร: o๘๖-๔๔๘-๘๕๖๖
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menu
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
struct ddrb_reg {
unsigned char DDR0: 1;
unsigned char DDR1: 1;
unsigned char DDR2: 1;
unsigned char DDR3: 1;
unsigned char DDR4: 1;
unsigned char DDR5: 1;
unsigned char DDR6: 1;
unsigned char DDR7: 1;
};
#define DDRB_BITS (*((volatile struct ddrb_reg *)0x37)) //Direct DDRB
struct portb_reg {
unsigned char B0: 1;
unsigned char B1: 1;
unsigned char B2: 1;
unsigned char B3: 1;
unsigned char B4: 1;
unsigned char B5: 1;
unsigned char B6: 1;
unsigned char B7: 1;
};
#define PORTB_BITS (*((volatile struct portb_reg *)0x38)) //Direct PORTB
int main(void)
{
DDRB_BITS.DDR0 = 1 ; // ให้ PortB บิต 0 เป็น เอาท์พุท
while(1)
{
PORTB_BITS.B0 = ~PORTB_BITS.B0 ;
_delay_ms(500);
}
return 0 ;
}
#define _XTAL_FREQ 40000000UL
#include <xc.h>
#include "Config.h" // #pragma config
#include <stdio.h>
void delay_ms(unsigned int i)
{
for(;i;i--)
{
__delay_ms(1) ;
}
}
void uart_init1(unsigned int baudrate){
TXSTA1 = 0; // Reset USART registers to POR state
RCSTA1 = 0;
// BRG_val = ((FOSC/Desired Baud Rate)/64) - 1
unsigned int BRG_val = ((_XTAL_FREQ/baudrate)/(64))-1;
SPBRGH1 = BRG_val>>8;
SPBRG1 = BRG_val;
TXSTA1bits.BRGH = 0; // 0 = low speed mode ,1= high speed mode
TXSTA1bits.SYNC = 0 ;
BAUDCON1bits.BRG16 = 0;
TRISCbits.TRISC6 = 0;
TRISCbits.TRISC7 = 1;
TXSTA1bits.TX9 = 0 ;
TXSTA1bits.TXEN = 1;
RCSTA1bits.SPEN = 1;
}
void uart_init2(unsigned int baudrate){
TXSTA2 = 0; // Reset USART registers to POR state
RCSTA2 = 0;
// BRG_val = ((FOSC/Desired Baud Rate)/64) - 1
unsigned int BRG_val = ((_XTAL_FREQ/baudrate)/(64))-1;
SPBRGH2 = BRG_val>>8;
SPBRG2 = BRG_val;
TXSTA2bits.BRGH = 0; // 0 = low speed mode ,1= high speed mode
TXSTA2bits.SYNC = 0 ;
BAUDCON2bits.BRG16 = 0;
TRISGbits.TRISG1 = 0;
TRISGbits.TRISG2 = 1;
TXSTA2bits.TX9 = 0 ;
TXSTA2bits.TXEN = 1;
RCSTA2bits.SPEN = 1;
}
void uart_putc1(unsigned char c){
while(!TXSTA1bits.TRMT);
TXREG1 = c;
}
void uart_putc2(unsigned char c){
while(!TXSTA2bits.TRMT);
TXREG2 = c;
}
void (*putchFunc)(char c) = uart_putc1 ; // UART1 is putch defualt
void putch(char c)
{
putchFunc(c); // call whatever function we've set the pointer to point to
}
void main(void)
{
uart_init1(4800) ;
uart_init2(9600) ;
printf("Test printf UART1 on PIC18F8722.\r") ; // Print UART1
delay_ms(500) ;
putchFunc = uart_putc2 ;
printf("Test printf UART2 on PIC18F8722.\r") ; // Print UART2
delay_ms(500);
putchFunc = uart_putc1 ;
printf("Test printf UART1 agian.\r") ; // Print UART1 agian.
printf("End.") ;
while(1);
}
#include <16F1937.h>
#FUSES NOWDT
#FUSES NOBROWNOUT
#FUSES NOLVP
#use delay(internal=32MHz)
#INT_RB
void On_Change_ISR(void)
{
if (!input(PIN_B4))
{
output_toggle(PIN_A2);
}
output_toggle(PIN_A1);
delay_ms(200);
}
void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_RB);
set_tris_b(0xF0);
set_tris_a(0x00);
output_a(0x00);
while (TRUE)
{
output_toggle(PIN_A0);
delay_ms(1000);
}
}
#include <16F1937.h>
#FUSES NOWDT
#FUSES NOBROWNOUT
#FUSES NOLVP
#use delay(internal=32MHz)
#INT_RB
void On_Change_ISR(void)
{
if (!input(PIN_B4))
{
output_toggle(PIN_A2);
}
output_toggle(PIN_A1);
delay_ms(200);
clear_interrupt(INT_RB4|INT_RB5|INT_RB6|INT_RB7);
}
void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_RB4|INT_RB5|INT_RB6|INT_RB7);
set_tris_b(0xF0);
set_tris_a(0x00);
output_a(0x00);
while (TRUE)
{
output_toggle(PIN_A0);
delay_ms(1000);
}
}