Thông tin tài liệu:
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng. Nó xuất hiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động, ...
Nội dung trích xuất từ tài liệu:
Giáo trình hoàn chỉnh vi điều khiển PIC 10 MOVWF TRISB ; PORTB Tuy nhieân ta deã daøng nhaän thaáy moät nhöôïc ñieåm cuûa chöông trình treân laø caàn tôùi haiñoaïn chöông trình delay vôùi caáu truùc chöông trình, thuaät toaùn vaø chöùc naêng hoaøn toaøn gioángnhau. Ñieàu naøy laøm cho chöông trình trôû neân phöùc taïp vaø toán nhieàu dung löôïng boä nhôù cuûa viñieàu khieån. Ñieàu naøy caàn ñöôïc chuù troïng vì dung löôïng boä nhôù chöông trình cuûa moät vi ñieàukhieån thöôøng nhoû (ñoái vôùi PIC16F877A dung löôïng boä nhôù chöông trình laø 8K word vôùi moätword laø 14 bit). Moät phöông phaùp ñeå khaéc phuïc nhöôïc ñieåm naøy laø söû duïng chöông trình convaø duøng leänh “CALL” ñeå goïi chöông trình con ñoù. Chöông trình con coù theå ñöïôc ñaët taïi baátcöù vò trí naøo trong chöông trình chính. Chöông trình 4.2 khi ñoù ñöôïc vieát laïi nhö sau:;chöông trình 4.1.3;PORTBTESTANDDELAY.ASM;Version 1.2processor 16f877a ; khai baùo vi ñieàu khieåninclude ; header file ñính keøm__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC &_WRT_OFF & _LVP_OFF & _CPD_OFF ; khai baùo caùc “Configuration bits”delay_reg1 EQU 0x20 ; khai baùo ñòa chæ caùc oâ nhôù chöùâa caùc thanh ghidelay_reg2 EQU 0x21 ; delay-reg1 vaø delay-reg2 ORG 0x000 ; ñòa chæ baét ñaàu chöông trình GOTO startstart ; chöông trình chính baét ñaàu taïi ñaây BCF STATUS,RP1 BCF STATUS,RP0 ; choïn BANK0 CLRF PORTB ; xoùa PORTB BSF STATUS,RP0 ; choïn BANK1 MOVLW 0x00 MOVWF TRISB ; PORTB CLRF PORTB ; xoùa PORTB CALL delay100ms GOTO loop ; voøng laëp voâ haïnDelay100ms MOVLW 0x83 MOVWF delay_reg1 MOVLW 0xFF MOVWF delay_reg2loop1 DECFSZ delay_reg1 GOTO loop2 GOTO exitloop2 DECFSZ delay_reg2 GOTO loop2 GOTO loop1 ; delay 100 msExit RETURN ; trôû veà chöông trình chínhEND ; keát thuùc chöông trình Vôùi caùch vieát chöông trình söû duïng chöông trình con, caáu truùc chöông trình seõ trôû neângoïn gaøng deã hieåu hôn, linh hoaït hôn vaø tieát kieäm ñöôïc nhieàu dung löôïng boä nhôù chöông trình. Baây giôø ta seõ baøn ñeán moät thuaät toaùn khaùc ñeå vieát chöông trình delay. Veà nguyeân taécthì thuaät toaùn môùi naøy khoâng coù nhieàu khaùc bieät so vôùi thuaät toaùn cuõ, tuy nhieân leänh söû duïngtrong chöông trình vaø caùch tính toaùn thôøi gian delay thì khaùc nhau. Chöông trình condelay100ms vôùi oscillator 4 MHz coù theå ñöôïc vieát laïi nhö sau: delay100ms MOVLW d’100’ MOVWF count1 d1 MOVLW 0xC7 MOVWF counta MOVLW 0x01 MOVWF countb delay_0 DECFSZ counta,1 GOTO $+2 DECFSZ countb,1 GOTO delay_0 DECFSZ count1,1 GOTO d1 RETLW 0x00 END Tröôùc tieân ta xeùt ñoaïn chöông trình keå töø label “delay_0”. Leänh DECFSZ maát moätchu kì leänh (tröø tröôøng hôïp thanh ghi counta mang giaù trò 0 thì caàn 2 chu kì leänh), leänh GOTO$+2 maát hai chu kì leänh. Leänh naøy coù taùc duïng coäng vaøo boä ñeám chöông trình giaù trò 2, khi ñoùchöông trình seõ nhaûy tôùi leänh coù ñòa chæ (PC+2), töùc laø leänh GOTO delay_0, leänh naøy cuõngtoán hai chu kì leänh. Nhö vaäy ta caàn toång coäng 5 chu kì leänh ñeå giaûm giaù trò trong thanh ghicounta 1 ñôn vò. Thanh ghi counta mang giaù trò 199 (C7h), do ñoù ñoaïn chöông trình naøy seõ taïora moät khoaûng thôøi gian delay: td = 5(counta+1)*ti = 5(199+1)*1 uS = 1 mS Muoán taïo ra thôøi gian delay 100 mS, ta chæ vieäc ñöa giaù trò 100 vaøo thanh ghi count1. Vôùi giaûi thuaät naøy thôøi gian delay taïo ra seõ daøi hôn so vôùi giaûi thuaät maø ta söû duïng ôûchöông trình 4.2. Beân caïnh ñoù ta coù theå vieát moät chöông trình con coù taùc duïng delay moätkhoaûng thôøi gian baát kì laø boäi soá cuûa 1 mS moät caùch deã daøng. Trong chöông trình treân ta coøn söû duïng theâm m ...