PORTB = 0xFF; //กำหนดให้ PORTB มีค่าเป็น 1 ทั้งหมด
PORTB = 0x00; //กำหนดให้ PORTB มีค่าเป็น 0 ทั้งหมด
วิธีการนี้ก็ง่ายๆ ตรงไปตรงมาดี แต่บางครั้งการเขียนโปรแกรมเราไม่สนใจว่าขณะนั้น PORTx มีค่าเป็นอะไร แต่เราต้องการสลับค่าภายใน จึงเปลี่ยนไปใช้คำสั่งระดับบิตในการสลับจะง่ายกว่า เช่น
PORTB = ~PORTB
คำสั่งนี้จะสั่งให้โปรแกรมสลับค่าใน PORTB จากเดิมที่เป็นให้เป็นตรงกันข้าม ถ้าเดิมเป็น 1 ให้กลับเป็น 0 ถ้าเดิมเป็น 0 ก็ให้เป็น 1 ซึ่งวิธีนี้จะง่ายและเหมาะสำหรับการกลับค่าที่ไม่เหมือนกันทั้งหมด เช่น
...
PORTB = 0b10101010;
while(1){
PORTB = ~PORTB;
}
...
คำสั่งสองสามบรรทัดข้างบนนี้จะทำให้ PORTB มีค่าระหว่าง 0b10101010 กับ 0b01010101 นั่นเอง
ตัวอย่างการสลับค่า I/O |
ตัวอย่างโปรแกรม
#define F_CPU 8000000l
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB = 0xff;
PORTB = 0b10101010;
while (1)
{
PORTB = ~PORTB;
_delay_ms(300);
}
}
หวังว่าตัวอย่างง่ายๆ นี่จะเป็นอีกแนวทางหนึ่งในการศึกษาการเขียนโปรแกรม AVR C และเป็นฐานในการพัฒนาต่อไปในอนาคต...
ไม่มีความคิดเห็น:
แสดงความคิดเห็น