TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP ------------------------- ĐÁP ÁN CUỐI KỲ HỌC KỲ 1 - NĂM HỌC 2016-2017 Môn: VI XỬ LÝ Mã môn học: MICR330363 Đề số/Mã đề: 01 Đề thi có: 02 trang Thời gian: 90 phút. Sinh viên chỉ được tham khảo một tờ giấy A4 viết tay Câu 1: (3 điểm) //KHAI BAO THU VIEN #INCLUDE <TV_16F887.C> //DINH NGHIA - NUT NHAN #DEFINE PHIM_0 PIN_E0 #DEFINE PHIM_50 PIN_E1 #DEFINE PHIM_100 PIN_E2 //KHAI BAO BIEN //VIET HAM CON VOID KT_PHIM_0() { IF(INPUT(PHIM_0) == 0) { SET_PWM1_DUTY(0); } } VOID KT_PHIM_50() { IF(INPUT(PHIM_50) == 0) { SET_PWM1_DUTY((INT16)250); } } VOID KT_PHIM_100() { IF(INPUT(PHIM_100) == 0) { SET_PWM1_DUTY((INT16)500); } } //VIET HAM CHINH VOID MAIN() { //KHOI TAO BAN DAU SET_TRIS_E(0X07); //KHOI TAO PWM SETUP_CCP1(CCP_PWM); SETUP_TIMER_2(T2_DIV_BY_16,124 ,1); SET_PWM1_DUTY(0); WHILE(TRUE) { KT_PHIM_0(); KT_PHIM_50(); KT_PHIM_100(); } } Trang: 1/2 Câu 2: (3.5 điểm) // KHAI BAO THU VIEN VOID HT_K4() #INCLUDE <TV_16F887.C> { #INCLUDE <TV_LCD.C> LCD_COMMAND(0X80); #DEFINE C_DOI PIN_C0 LCD_DATA("N.Do ="); LCD_COMMAND(0X80+8); // KHAI BAO BIEN LCD_DATA(TR_K4); UNSIGNED INT16 ND_K4,GT_CAI; LCD_DATA(CH_K4); UNSIGNED INT8 DV_K4, CH_K4, TR_K4, DV_GT_CAI, CH_GT_CAI, TR_GT_CAI; UNSIGNED INT8 LCD_DATA(DV_K4); IF(TT_CDOI == 0) LCD_DATA(" do C"); I; ELSE LCD_DATA(" do K"); INT1 TT_CDOI,TT_NN; LCD_COMMAND(0XC0); // VIET HAM CON LCD_DATA("GT cai ="); VOID KT_CDOI() LCD_COMMAND(0XC0+8); { LCD_DATA(TR_GT_CAI); IF(INPUT(C_DOI) == 0) LCD_DATA(CH_GT_CAI); { LCD_DATA(DV_GT_CAI); DELAY_MS(20); IF(TT_CDOI == 0) LCD_DATA(" do C"); IF(INPUT(C_DOI) == 0) { ELSE LCD_DATA(" do K"); } TT_CDOI = ~TT_CDOI; } WHILE(INPUT(C_DOI) == 0); VOID DO_K4() { } SET_ADC_CHANNEL(4); } DELAY_MS(1); ND_K4 = 0; VOID GM_K4() FOR(I=0; I<100; I++) { { DV_K4 = ND_K4%10 + 0X30; ND_K4 = ND_K4 + READ_ADC(); CH_K4 = ND_K4/10%10 + 0X30; DELAY_MS(1); TR_K4 = ND_K4/100 + 0X30; } ND_K4 = ND_K4/100/2.046; DV_GT_CAI = GT_CAI%10 + 0X30; } CH_GT_CAI = GT_CAI/10%10 + 0X30; TR_GT_CAI = GT_CAI/100 + 0X30; } Trang: 2/2 S// VIET HAM CHINH GT_CAI = 45 + 273; VOID MAIN() } { ELSE //KHOI TAO BAN DAU GT_CAI = 45; SET_TRIS_D(0X00); SET_TRIS_E(0X00); GM_K4(); SET_TRIS_C(0X01); IF(TT_NN==1) { //KHOI TAO LCD LCD_COMMAND(0X80+8); LCD_SETUP(); LCD_DATA(" "); LCD_COMMAND(0XC0+8); //KHOI TAO ADC LCD_DATA(" "); SETUP_ADC(ADC_CLOCK_DIV_32); DELAY_MS(500); SETUP_ADC_PORTS(SAN4 | VSS_VDD); HT_K4(); DELAY_MS(500); TT_CDOI = 0; } // VONG LAP TUAN HOAN ELSE HT_K4(); WHILE(TRUE) { IF(ND_K4 > GT_CAI) KT_CDOI(); { TT_NN = 1; OUTPUT_HIGH(PIN_C1); } //DO NHIET DO - K4 ELSE DO_K4(); { TT_NN = 0; OUTPUT_LOW(PIN_C1); } IF(TT_CDOI == 1) { } } ND_K4 = ND_K4 + 273; Trang: 3/2 Câu 3: (3.5 điểm) VĐK_TTAM: //KHAI BAO THU VIEN #INCLUDE <TV_16F887.C> #DEFINE MODE PIN_E0 //KHAI BAO UART #USE RS232(BAUD = 4800, XMIT=PIN_C6, RCV=PIN_C7) //KHAI BAO BIEN UNSIGNED INT8 I,J,TT_MODE; //VIET HAM CON VOID KT_MODE() { IF(INPUT(MODE) == 0) { DELAY_MS(20); IF(INPUT(MODE) == 0) { TT_MODE++; IF(TT_MODE == 4) TT_MODE = 1; WHILE(INPUT(MODE) == 0); } } } //VIET HAM CHINH VOID MAIN() { //KHOI TAO BAN DAU SET_TRIS_E(0XFF); TT_MODE = 1; //VONG LAP TUAN HOAN WHILE(TRUE) { KT_MODE(); IF(TT_MODE == 2) { FOR(I=0;I<4;I++) { PUTC(I); FOR(J=0; J<20; J++) //DELAY CO KT PHIM { KT_MODE(); DELAY_MS(100); } } } IF(TT_MODE == 3) { PUTC('T'); } } } VĐK_TRAM: //KHAI BAO THU VIEN #INCLUDE <TV_16F887.C> //KHAI BAO UART #USE RS232(BAUD = 4800, XMIT=PIN_C6, RCV=PIN_C7) //KHAI BAO BIEN UNSIGNED INT8 DL_NHAN, TT_NN; //VIET HAM NGAT #INT_RDA VOID NGAT_UART() { DL_NHAN = GETCH(); IF(DL_NHAN == 0) OUTPUT_D(0X00); IF(DL_NHAN == 1) OUTPUT_D(0X01); IF(DL_NHAN == 2) OUTPUT_D(0X02); IF(DL_NHAN == 3) OUTPUT_D(0X04); IF(DL_NHAN == 'T') TT_NN = 1; ELSE TT_NN = 0; } //VIET HAM CON //VIET HAM CHINH VOID MAIN() { //KHOI TAO BAN DAU SET_TRIS_D(0X00); SET_TRIS_B(0X00); OUTPUT_D(0X3C); DELAY_MS(2000); OUTPUT_D(0X00); ENABLE_INTERRUPTS(GLOBAL); ENABLE_INTERRUPTS(INT_RDA); //VONG LAP TUAN HOAN WHILE(TRUE) { IF(TT_NN == 1) { OUTPUT_D(0X00); DELAY_MS(1000); OUTPUT_D(0XFF); DELAY_MS(1000); } } } Trang: 4/2