• 沒有找到結果。

UART 控制 LED 花樣變化 //

N/A
N/A
Protected

Academic year: 2022

Share "UART 控制 LED 花樣變化 //"

Copied!
4
0
0

加載中.... (立即查看全文)

全文

(1)

UART 控制 LED 花樣變化

//有提示的 UART 傳輸,LED 花樣變化 // project name:/ch09/uart_2

#include "SPCE061A.h"

void UART_Init();

char UART_getch();

void UART_putch(char);

void UART_sendstring(char *);

void UART_sendstring_no_linefeed(char *);

void Init_A_Port();

void main() {

unsigned int data;

char *p0 = "========= SPCE061A 串列傳輸實習 =========";

char *p1 = "按 1 , LED 全亮";

char *p2 = "按 2 , LED 全滅";

char *p3 = "按 3 , LED 奇數亮";

char *p4 = "按其他 , 左半邊亮";

char *p5 = "請輸入==> ";

UART_Init();

Init_A_Port();

UART_sendstring(p0);

UART_sendstring(p1);

UART_sendstring(p2);

UART_sendstring(p3);

UART_sendstring(p4);

UART_sendstring_no_linefeed(p5);

while(1) {

data=UART_getch(); //讀出接收的資料

UART_putch(data); // echo 回去發射端 UART_putch(0x08);

switch (data) {

(2)

case '1': *P_IOA_Data=0x0000; //點亮 LED break;

case '2': *P_IOA_Data=0xffff; //熄滅 LED break;

case '3': *P_IOA_Data=0xAAAA; //間隔 LED

break;

default : *P_IOA_Data=0xF0F0; //4 暗 4 亮 }

} //while } // main

//===================================================

void UART_sendstring(char *str) //送出字串,跳行 {

char *p,ch;

p = str;

while ( *p ) {

ch = *p;

UART_putch(ch);

p++;

}

UART_putch(0x0a);

UART_putch(0x0d);

}

//===============================================

void UART_sendstring_no_linefeed(char *str) //不跳行 {

char *p,ch;

p = str;

while ( *p ) {

ch = *p;

UART_putch(ch);

p++;

}

UART_putch(0x08);

(3)

}

//===============================================

void UART_Init() {

char ch;

// 注意: 特殊接腳時仍須設定 GPIO 暫存器, 否則可能因被強迫 pull-high/low 而不動作

*P_IOB_Dir=0x0400; // IOB10=output(TX), IOB7=input(RX)

*P_IOB_Attrib=0x0480; // IOB10=not invert, IOB7=float

*P_UART_Command1=0x20; // UART reset, 無同位元

*P_UART_BaudScalarHigh=0x05; // Baud=9600bps *P_UART_BaudScalarLow=0x00;

*P_UART_Command2=0x00C0; // 致能 RX/TX

ch = *P_UART_Data; // 清除緩衝區 }

//===================================================

char UART_getch() {

while( ! (*P_UART_Command2 & 0x0080)) { //等待接收完畢 *P_Watchdog_Clear=C_WDTCLR;

}

return *P_UART_Data;

}

//===================================================

void UART_putch(char ch) {

while( !( *P_UART_Command2 & 0x0040)) { //等待前一次發射完畢 *P_Watchdog_Clear=C_WDTCLR;

}

*P_UART_Data = ch;

}

//===================================================

(4)

void Init_A_Port() {

*P_IOA_Dir=0xffff; //IOA0~IOA7 初始化為輸出 *P_IOA_Attrib=0xffff;

*P_IOA_Data=0xffff;

}

參考文獻

相關文件

More than 2.0 grams per kilogram of body weight for athlete who is consuming a vegan diet or a low-calorie diet (Earle, Baechle et al.,

這堂課讓我了解光敏電阻的特性,可以利用光的強弱變為電阻值之變化來控制電 路的目的,還有它可以應用在哪些物體上,讓我覺得很神奇,因為這類課以

政策標的團體 學術參照團體 資訊傳播媒體 利益整合團體

在工業上,例如:產業自動化控制、化工程序控 制、機器人定位控制、CNC工具機之數值控制等;在 軍事上的用途,例如:飛機之導航系統、飛彈之射控

LED。Wii remote 裏的光學感應器,可以根據這些 LED 成像的

[r]

化學變化 吸熱.

花青素在不同酸鹼環境下的顏色變化.