Cảm ơn anh Nam!
Tất nhiên là khi em dùng timer1 thì em phải khai báo header của nó chứ ạ: include"timers.h"
Em chưa hiểu phần LATA là như thế nào, khi mình khai báo giả sử như là LATA=0 thì có khác gì so với câu khai báo PORTA=0 không vậy anh ? Em chỉ biết với câu PORTA=0:
- với PortA là ouput thì tất cả 8 pins của PORTA sẽ là mức 0, vậy lúc này giả sử em dùng câu lệnh : x=PORTAbits.RA0 + 1; nó có ok không anh ?
- Với PORTA là input: thì câu lệnh PORTA=0; có ý nghĩa gì không anh ?
Trích:
Nguyên văn bởi namqn
Để dùng một số 16 bit, bạn chỉ việc khai báo một biến có kiểu là unsigned int (hoặc unsigned short), trình dịch sẽ tự động dùng hai thanh ghi (ô nhớ) nằm trong vùng RAM công dụng chung (general purpose) cho biến đó.
|
Vậy ví dụ như em khai báo như sau :
unsigned int x;
rồi em cho : y = xbits.x1; ( y là bit 1 của x) câu lệnh này có được không anh, hay là em tự chế ra nhỉ ? Vậy có cách nào làm được câu lệnh đó ( y = xbits.x1; ), em phải thay thế biến x bằng thanh ghi nào cho thích hợp, để em có thể lấy từng bit của nó 1 cách dễ dàng hơn, linh động hơn. Giả sử em gọi thanh ghi đó là h (thanh ghi 16 bits) , và em muốn thực hiện dòng lệnh sau :
h ++;
x = hbits.h1;
z = hbits.h10;
PORTCbits.RC0 = hbits.h15;
Anh giúp em chuyển thành chương trinh trong C18 nha anh.
Chân thành cảm ơn anh !