第四章 MSP430數位I/O原理與實驗
數位I/O內部暫存器
數位I/O內部暫存器
數位I/O內部暫存器
數位I/O內部暫存器
數位I/O LED01.C 觀察暫存器的變化 用示波器或電錶量測 0x01 0000 0001 Digital Output 測試I/O pin 的電壓變化 觀察暫存器的變化 用示波器或電錶量測 0x01 0000 0001 試試看讓Pin 1.0~Pin 1.3 全部為低電位
數位I/O LED01.C 試試看讓LED1、LED2 同時亮起來
數位I/O LED02.C 觀察暫存器的變化 用示波器或電錶量測 0x01 0000 0001 0x00 0000 0000 Digital Output 測試I/O pin 的電壓變化 觀察暫存器的變化 用示波器或電錶量測 0x01 0000 0001 0x00 0000 0000 試試看改變延遲時間
數位I/O LED02.C 單晶片程式常用小技巧 使用|= P1DIR |= BIT0; P1DIR = P1DIR | BIT0; P1DIR xxxx xxxx OR 0x01 0000 0001 xxxx xxx1 只有設為1的位置被改變 有何好處???? 若同時將板子上兩顆LED點亮,如何作?
數位I/O LED02.C 單晶片程式常用小技巧 使用&= ~() P1DIR &= ~BIT0; P1DIR = P1DIR & (~BIT0); P1DIR xxxx xxxx AND ~0x01 1111 1110 xxxx xxx0 只有設為0的位置被改變 有何好處???? 若同時將板子上兩顆LED熄滅,如何作?
數位I/O LED03.C 試試看讓兩個燈同時閃爍 試試看讓兩個燈交錯閃爍 Digital Output eXclusive-OR, XOR) 當奇數個輸入為高準位時,才有高準位輸出。 2輸入互斥或閘:只有2輸入不同時才有高準位輸出。 試試看讓兩個燈同時閃爍 試試看讓兩個燈交錯閃爍
數位I/O SWITCH01.C Digital Input 供應3.3V電壓或接地,觀察暫存器的變化
數位I/O SWITCH02.C 按S2鈕按下,LED1會跟著熄滅(反相,why??) xxxx 0xxx P1IN= v = Digital Input 按S2鈕按下,LED1會跟著熄滅(反相,why??) xxxx 0xxx xxxx xxx0 P1IN= v = v >>3 試著讓LED2跟著S2變化(同相)
數位I/O SWITCH03.C 監測S2有無被按下,若被按下,LED1燈號跟著反覆變化(變很快) xxxx 0xxx P1IN= Digital Input 監測S2有無被按下,若被按下,LED1燈號跟著反覆變化(變很快) xxxx 0xxx 0000 1000 0000 0000 P1IN= 0x08 = AND mask 試著改成監測P1.7電位 若為H則讓LED1及LED2 交錯閃爍 若為L則停留在上次狀態
數位I/O SWITCH04.C 監測S2有無被按下,若被按下,LED1與LED2交錯閃爍 x0xx xxx1 P1OUT = Digital Input 監測S2有無被按下,若被按下,LED1與LED2交錯閃爍 x0xx xxx1 0100 0001 x1xx xxx0 P1OUT = 0x41 = XOR mask x0xx xxx1 0100 0001 P1OUT = 0x41 = XOR
數位I/O SWITCH05.C 監測S2有無被按下,若被按下且放開後,LED1與LED2交錯一次 xxxx 0xxx P1IN= Digital Input 監測S2有無被按下,若被按下且放開後,LED1與LED2交錯一次 xxxx 0xxx 0000 1000 0000 0000 P1IN= 0x80 = AND mask 解決按鈕開關彈跳問題 利用延遲解決(for迴圈部分) 試著改成按下瞬間就改變
數位I/O Pull-up/down resistor Pull-up/down resistors are used in electronic logic circuits to ensure that inputs to logic systems settle at expected logic levels if external devices are disconnected or high-impedance. They may also be used at the interface between two different types of logic devices, possibly operating at different power supply voltages. From Wiki When the switch is open the voltage of the gate input is pulled up to the level of Vin. When the switch is closed, the input voltage at the gate goes to ground. When the switch is open the voltage of the gate input is pulled down to the level of ground. When the switch is closed, the input voltage at the gate goes to Vin.
數位I/O Pullup_down01.C 示波器探棒接到GND及P1.4,以手觸摸P1.4腳,可發現P1.4電位不穩定狀況。 Digital 示波器探棒接到GND及P1.4,以手觸摸P1.4腳,可發現P1.4電位不穩定狀況。
數位I/O Pullup_down01.C 移除兩行註解狀態,將P1.4分別接到GND及VCC觀察LED1狀態。 Digital 移除兩行註解狀態,將P1.4分別接到GND及VCC觀察LED1狀態。 若要P1.4輸入預設為high,該如何修正?