Trích:
Nguyên văn bởi NTVinh
Code:
#include <16F877.h>
#device *=16
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=2000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //
int8 i;
float temp[32];
#int_rda
void serial_isr() {
*(&temp[0]+i)=getc();
i++;if(i==128)i=0;
}
void main() {
i=0;
do {
//...
} while (TRUE);
}
Nguyen The Vinh.
|
Xin anh giải thích:
_ Tại sao anh khai báo mảng 32 phần tử mà khi sử dụng lại dùng tới 128 phần tử?
_ Cú pháp &temp[0] có phải lấy địa chỉ của temp[0]?
_ Và *(&temp[0]+i) là giá trị trong ô nhớ có địa chỉ (&temp[0]+i).
_ Nếu khai báo biến và sử dụng biến như trên thì CCS sẽ xử lý như thế nào? vì trong trường hợp nào sẽ xảy ra lỗi?
Cảm ơn anh rất nhiều!
Mong anh.
hpecom.