Professional Documents
Culture Documents
VẤN ĐỀ 1: Cho sơ đô phân cứng như hình trên, viết chương trình thực hiện yêu cầu sau:
- Khi mới cấp điện (Reset): Các led chớp tắt 5 lần
- Khi K0 tác động: số đếm trên led đơn tăng lên 1 đơn vị (dạng nhị phân 8 bit), khi
tăng đến giá trị 0xFF thì trở về giá trị 0x00.
- Khi K1 tác động: số đếm trên led đơn giảm xuống 1 đơn vị (dạng nhị phân 8 bit),
khi giảm đến giá trị 0x00 thì trở về giá trị 0xFF.
- Khi K2 tác động: số đếm trên led đơn được gán về giá trị 0x00.
LƯU ĐỒ GIẢI THUẬT:
CODE:
#include "io430f5529.h"
#define LEDS P3OUT
#define K0 P2IN_bit.P2IN1
#define K1 P2IN_bit.P2IN2
#define K2 P2IN_bit.P2IN3
#define COM P4OUT_bit.P4OUT0
//-------------------Khai bao prototype ham-------------------------
void delayms(int ms);
void blink(int time);
void main(){
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0XFF;
P2REN = BIT1|BIT2|BIT3;
P2OUT = BIT1|BIT2|BIT3;
blink(5);
int count=0;
while(1){
if(K0==0){
delayms(250);
count++; LEDS=count;
if(count>255) count=0;
LEDS=count;
}
//------------------------------------------------
if(K1==0){
delayms(250);
count--; LEDS=count;
if(count<0) count=255;
LEDS=count;
}
//------------------------------------------------
if(K2==0){
delayms(250); count=0;
LEDS=count;
}
//------------------------------------------------
}
}
void blink(int time){
for(int i=0;i<time;i++){
LEDS = 0XFF;
delayms(500);
LEDS = 0X00;
delayms(500);
}
}
void delayms(int ms){
for(int i=0;i<ms;i++)
__delay_cycles(1000);
}
VẤN ĐỀ 2: Cho sơ đô phân cứng như hình trên, viết chương trình thực hiện yêu cầu
sau:
- Khi mới cấp điện (Reset): Các led dịch trái Š lần và dịch phải 3 lần.
- Khi K0 tác động: số đếm trên led đơn tăng lên 1 đơn vị (dạng nhị phân 8 bit), khi
tăng đến giá trị 0xFF thì trở về giá trị 0x00.
- Khi K1 tác động: số đếm trên led đơn giảm lên 1 đơn vị (dạng nhị phân 8 bit), khi
giảm đến giá trị 0x00 thì trở về giá trị 0xFF.
- Khi K2 tác động: số đếm trên led đơn tự tăng với chu kỳ 1s.
LƯU ĐỒ GIẢI THUẬT:
CODE:
#include "io430f5529.h"
#define LEDS P3OUT
#define K0 P2IN_bit.P2IN1
#define K1 P2IN_bit.P2IN2
#define K2 P2IN_bit.P2IN3
#define COM P4OUT_bit.P4OUT0
//------------Khai bao prototype ham-------------------------
void delayms(int ms);
void ShiftLLeft(int time);
void ShiftLRight(int time);
void main(){
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0XFF;
P2REN = BIT1|BIT2|BIT3;
P2OUT = BIT1|BIT2|BIT3;
ShiftLLeft(5);
ShiftLRight(3);
int count=0;
while(1){
if(K0==0){
delayms(250);
count++; LEDS=count;
if(count==255) count=0;
LEDS=count;
}
//------------------------------------------------
if(K1==0){
delayms(250);
count--; LEDS=count;
if(count<0) count=255;
LEDS=count;
}
//------------------------------------------------
if(K2==0){
for(int i=0;i<255;i++){
count++;
delayms(1000);
LEDS=count;
}
//------------------------------------------------
}
}
//------------------------------------
void delayms(int ms){
for(int i=0;i<ms;i++)
__delay_cycles(1000);
}
void ShiftLLeft(int time){
char led = 0x01;
for(int i =0; i<8;i++){
P3OUT = led;
led =led <<1;
delayms(100);
}
}
void ShiftLRight(int time){
char led = 0x80;
for (int i = 0 ;i<8;i++){
P3OUT = led;
led = led>>1;
delayms(100);
}
}