Để làm việc với các chân vào ra của stm8 thì chúng ta cần quan tâm đến 5 thanh ghi :
Data Direction Register : Thanh ghi cấu hình vào ra của PORT (input/output)
Nếu 1 bit trong thanh ghi này được set lên 1 thì pin tương ứng là output, và ngược lại nếu =0 thì sẽ là input
PD_ODR = 0; // Toàn bộ các chân trong port D là output PD_DDR_DDR0 = 1; // đặt pin 0 của portD là output PD_DDR_DDR1 = 1; // ................ PD_DDR_DDR2 = 0; // đặt chân 2 của portD là input
Px_CR1 & Px_CR2 là 2 thanh ghi điều khiển của PORTx. (x=A<B<C<D..)Px_CR1 & PxCR2 – Control Register 1 and 2
Register | Mode | Value | Description |
---|---|---|---|
CR1 | Input | 0 | Floating input |
CR1 | Input | 1 | Input with pull-up |
CR1 | Output | 0 | Open drain |
CR1 | Output | 1 | Push-Pull |
CR2 | Input | 0 | Interrupt disabled |
CR2 | Input | 1 | Interrupt enabled |
CR2 | Output | 0 | Output up to 2 MHz. |
CR2 | Output | 1 | Output up to 10 MHz |
Floating input : là đầu vào thả nổi
Input with pull-up : là đầu vào có điện trở treo trong
open drain : đầu ra hở
Push-Pull : đầu ra có trở treo
Interrupt disable: vô hiệu ngắt
interrupt enable : kích hoạt ngắt
Output up to 2 Mhz : tần số đầu ra là 2 Mhz
Ví dụ :
Px_CR1_C1y = 1; // push-pull
Px_CR2_C2y = 0; // 2Mhz
trong đó x là A,D,B,C.. là tên Port
y = 0->7;
Tôi viết 1 ví dụ cho các bạn dễ hiểu như sau. Pin3 của PortD sẽ nhấp nháp liên tục
#include <intrinsics.h>#include <iostm8s003f3.h>
void Delay(int nCount)
{
while (nCount != 0)
{ nCount--;
}
}
//// Main program loop.//
void main()
{
PD_DDR_DDR3 = 1; //PD3 output
PD_CR1_C13 = 1; // push-pull
PD_CR2_C23 = 0; // 2Mhz
while (1)
{
PD_ODR_ODR3 = !PD_ODR_ODR3; //đảo trạng thái của pin3
Delay(0xffff);
}
}
Các linh kiện cần có :
1 board STM8 tự chế ,
1 tụ C=1u
1 trở 220 ôm
1 led
và 1 nguồn 5V
Sơ đồ mạch
Cực đơn giản để bạn có thể bắt đầu với 1 vi điều khiển mạnh và giá rẻ như STM8.
Nếu không làm được board các bạn cứ liên hệ với tôi
PD_DDR_DDR0 = 1 mình k hiểu câu lệnh này lắm,PD là chỉ cổng D vậy DDR có tác dụng gì?
ReplyDeleteset bit 0 của thanh ghi DDR của port PD
DeleteMình không hiểu lắm về thanh ghi DDR,nó khác thanh ghi CR1,CR2,ORC chỗ nào vậy?
DeleteDDR là thanh ghi chỉ hướng dữ liệu, giống TRIS của pic. Còn cr1 là thanh ghi điều khiển
ReplyDelete