|
1樓 巨大八爪鱼
2016-10-12 22:24
使用I/O口組件: components HplMsp430GeneralIOC; MyC.LED1 -> HplMsp430GeneralIOC.Port54; // 用LED1表示P5.4 uses interface HplMsp430GeneralIO as LED1;
將I/O口設置為輸入/輸出: call LED1.makeInput(); call LED1.makeOutput(); 輸入: call LED1.get(); 輸出0/1: call LED1.clr(); call LED1.set(); call LED1.toggle(); // 反轉高低電平
|
|
2樓 巨大八爪鱼
2016-10-12 22:24
讀I/O口所在端口(如P5)的8個I/O口的狀態: call LED1.getRaw(); (相當於51單片機中的P0、P1之類的寄存器,以及AVR單片機中的PORTA、PORTB等寄存器) 判斷I/O口目前是輸入還是輸出: call LED1.isInput(); call LED1.isOutput(); 讀取或判斷I/O口是否使用其復用功能: call LED1.selectModuleFunc(); call LED1.selectIOFunc(); call LED1.isModuleFunc(); call LED1.isIOFunc();
|
|
3樓 巨大八爪鱼
2016-10-12 22:25
MSP430單片機中有兩個基本定時器:TimerA和TimerB 使用定時器組件:components Msp430TimerC; 使用定時器A: MyC.TimerA -> Msp430TimerC.TimerA; uses interface Msp430Timer as TimerA; 必須實現定時器中斷函數: async event void TimerA.overflow(void) {} 啟用/禁用定時器中斷: call TimerA.enableEvents(); call TimerA.disableEvents();
|
|
4樓 巨大八爪鱼
2016-10-12 22:25
BusyWaitMicroC延時組件 使用組件: components BusyWaitMicroC; MyC.BusyWait -> BusyWaitMicroC.BusyWait; uses interface BusyWait<TMicro, uint16_t>; // 其中的兩個參數不能改變
延時100微秒: call BusyWait.wait(100);
|
|
5樓 巨大八爪鱼
2016-10-12 22:25
標準1秒延時函數 // 延時1秒 void delay_1s(void) { uint8_t i; for (i = 0; i < 20; i++) { call BusyWait.wait(50000u); // 延時50000微秒(=50毫秒) } }
|