K(готово) / 3
.2.doc
3.2 Робоча програма пристрою на Ассемблер чи мові високого рівня list p = 16f628 # Include <p16f628.inc> __CONFIG _CP_OFF & _WDT_ON & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _LVP_OFF # Define IDAT PORTB, 0; керування сигналом DI # Define ICLC PORTB, 1; керування сигналом SK # DEFINE VHOD PORTB, 2; вхід від розподільника # DEFINE BANK0 BCF STATUS, RP0; включення банку 0 # DEFINE BANK1 BSF STATUS, RP0; включення банку 1 CARRY equ 0X00 CBLOCK 0X20 CNT1; молодший осередок лічильника довжини імпульсу CNT2; старший осередок лічильника довжини імпульсу CNTZ1; молодших і старших лічильника довжини імпульсу CNTZ2; затримки перед вимірами довжини імпульсу ACCaHI ACCaHH ACCbLO ACCbHI ACCbHH ACCcLO; ACCcHI ACCdLO ACCdHI ACCdHH temp |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
24 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
sign count H_byte L_byte R0; зміни використовуються підпрограми R1; перетворення в двійково десятковий вид R2 RBYTE HSD; зміни виконуються підпрограмою затримки SD LSD Flags ENDC ORG 0X00; вектор скидання GOTO START ORG 0X04; вектор переривання GOTO INTER INTER RETURN; программа обробки переривання ; (поривання виконується підпрограмою) ; Початкові налаштування START CLRF PORTB; обнулення порів BANK1 MOVLW B'00000100 '; RB2 - вхід, MOVWF TRISB BANK0 CLRF TMR0очищення І TMR0 BANK1 CLRWDT; ОЧИЩЕННЯ визначення І WDT MOVLW B'11111110 '; коефіцієнт 1:64 MOVWF OPTION_REG; визначення під’єднання до WDT |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
25 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
BANK0 CALL OCHIST; звернення до підпрограми очищення дисплея NACH CLRWDT; очищення І WDT CALL FRSCR; виведення на дисплей CALL CMETER; вимірювання періоду імпульсів ; тіло програми перетворення і виведення на індекатор MOVF CNT2, W movwf ACCaHI MOVF CNT1, W; завантадження: ACCa = CNT movwf ACCaLO ; DIV = 4476276/CNT movlw 0X44 movwf ACCbHH movlw 0X4D movwf ACCbHI movlw 0X74; завантадження: ACCb = 4476276 movwf ACCbLO CALL DIVIS ; BCD MOVF ACCbHI, W movwf H_byte MOVF ACCbLO, W movwf L_byte call B2_BCD MOVF CNTZ1, W; CNTZ ---> ACCa MOVWF ACCaLO MOVF CNTZ2, W MOVWF ACCaHI MOVF CNT1, W; CNT ---> ACCb MOVWF ACCbLO |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
26 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
MOVF CNT2, W MOVWF ACCbHI CALL ADDIT; додавання результату ACCa CLRF ACCbHI; 0006H ---> ACCb MOVLW 0X06 MOVWF ACCbLO CALL DBL_MPYS; множення - результату ACCb, ACCc (32біт) MOVF ACCcLO, W; Р результат множення ---> ACCa MOVWF ACCaLO MOVF ACCcHI, W MOVWF ACCaHI MOVF ACCbLO, W MOVWF ACCaHH MOVLW 0X0C; ПРИ 0C4B03 У ACCB - оновлення індикатором кожні0,9 сек MOVWF ACCbHH MOVLW 0X4B MOVWF ACCbHI MOVLW 0X03 MOVWF ACCbLO CALL D_SUB; РЕЗУЛЬТАТ У ACCb MOVLW D'016 ' MOVWF ACCaLO CLRF ACCaHI; попередній результат CALL DIVIS; на 16, результату ACCb MOVF ACCbLO, W; попередній результат ---> HSD, LSD MOVWF LSD MOVF ACCbHI, W MOVWF HSD
|
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
27 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
CALL DELAY GOTO NACH CMETER CLRF CNT1; обнулення лічильника CLRF CNT2 CLRF CNTZ1 CLRF CNTZ2 BTFSS VHOD GOTO SIG0; ВХ = 0 NOP SIG1 INCFSZ CNTZ1, F; збільшення молодшого розряду лічильника на 1 GOTO LOOP7; перевірка занятості INCF CNTZ2, F; збільшення старшого розряду LOOP7 BTFSC VHOD; пошук фронту GOTO SIG1; НІ NOP LOOP3 INCFSZ CNT1, F; збільшення молодшого розряду лічильника на 1
GOTO LOOP8; перевірка на здатність роботи INCF CNT2, F; збільшення старшого розряду LOOP8 BTFSS VHOD; GOTO LOOP3 NOP LOOP4 INCFSZ CNT1, F; збільшення молодшого розряду лічильника на 1 GOTO LOOP9; перевірка INCF CNT2, F; збільшення молодшого розряду LOOP9 BTFSC VHOD; GOTO LOOP4 RETURN |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
29 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
SIG0 INCFSZ CNTZ1, F; збільшення молодшого розряду лічильника на 1
GOTO LOOP1; перевірка на зайнятість INCF CNTZ2, F; збільшення старшого розряду LOOP1 BTFSS VHOD; пошук збільшення фронту GOTO SIG0; НІ NOP LOOP2 INCFSZ CNT1, F; збільшення молодшого розряду лічильника на 1
GOTO LOOP5; перевірка на зайнятість INCF CNT2, F; збільшення старшого розрялу LOOP5 BTFSC VHOD; отримання сигналу GOTO LOOP2 NOP LOOP6 INCFSZ CNT1, F; збільшення молодшого розряду лічильника на 1
GOTO LOOP10; перевірка на зайнятість INCF CNT2, F; збільшення старшого розрялу LOOP10 BTFSS VHOD; отримання сигналу GOTO LOOP6 RETURN FRSCR MOVLW 0XAA CALL INDC MOVLW 0XAA CALL INDC MOVLW 0XAA CALL INDC MOVF R1, W CALL INDC SWAPF R1, W |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
30 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
CALL INDC MOVF R2, W CALL INDC SWAPF R2, W CALL INDC MOVLW 0XAA CALL INDC MOVLW 0XAA CALL INDC MOVLW 0XAA CALL INDC RETURN INDC bsf ICLC; CLKв неактивний стан andlw 0xF0 movwf temp; збереження SWAPF temp, F movlw 0Ah xorwf temp, w; temp = 10 (тобто "ПУСТО") btfsc STATUS, Z; W не дорівнює 10 goto mwyw; в W тепер 0, тобто BLANK (порожньо) movf temp, w; відновили W andlw 0fh; define Z (= 0?) btfsc STATUS, Z movlw .10; (1010) - це відображається як 0 mwyw movwf temp; якщо замінили 0 на 10 то змінимо і temp rlf temp, f; необхідний біт (старший першим) в розряд 4 (--- В: ----) call bitlcd; висновок біта з розряду 4 temp на DI (bit3) rlf temp, f; зсув для наступного біта (2) call bitlcd rlf temp, f; next - bit1 |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
31 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
call bitlcd rlf temp, f; last - bit0 call bitlcd call mks4; пауза між символами не менше 5 мкс goto mks4; ... і вихід bitlcd bsf ICLC; неактивний стан ICLC btfss temp, 4; вихід ІЗ 4 БІТА TEMP goto lowbit bsf IDAT goto outclk lowbit bcf IDAT outclk call mks4; пауза не менше 2 мкс для встановлення даних bcf ICLC; call mks4; довжина стробу не менше 2 мкс (Кварц = 4MHz) ; Clk хоч в 0 хоч в 1 залишай, але без повторюваного ; Виведення на дисплей - він, через кілька секунд переходить в режим ; Внутрішнього таймера goto mks4 ; CLK (вбудований в LCD таймер як би не включено) ; ; Затримка трохи більше норми ; Виявилося важливо! ; При 1 "nop" - були збої індикатора mks4 nop nop return OCHIST MOVLW 0X00; підпрограма очищення дисплею MOVWF R1; виводить: MOVWF R2; ___ 0 0 0 0 ___ RETURN |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
32 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
; підпрограма складання двох байтових чисел: ; додавання: ACCb (16 bits) + ACCa (16 bits) -> ACCa (16 bits) ; виконання: ; Program Memory: 07 ; Clock Cycles: 08 ADDIT movf ACCbLO, w addwf ACCaLO, F; add lsb btfsc STATUS, CARRY; add in carry incf ACCaHI, F movf ACCbHI, w addwf ACCaHI, F; add msb retlw 0
|
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
33 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
Анотація Завданням даного курсового проекту є створення схеми електричної принципової цифрового тахометру- годинник. В ході виконання курсового проекту розроблено структурну та електричну принципову схему пристрою та програму тестування роботи пристрою, та проведено розрахунок надійності його роботи. Виконання даної курсової роботи змусило повторити та закріпити вивчений протягом навчального року матеріал з предмету «Мікропроцесорні системи», а також звернутися до додаткової літератури та дізнатися багато іншої інформації. |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
35 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
Література
Самофалов К.Г., Викторов О.В., Кузняк А.К. «Микропроцессоры» // К.: Техника, 1986. |
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 022. ПЗ |
Аркуш
|
|
|
|
|
|
36 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
|
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 010. ПЗ |
Аркуш
|
|
|
|
|
|
4 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
|
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 010. ПЗ |
Аркуш
|
|
|
|
|
|
4 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
|
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 010. ПЗ |
Аркуш
|
|
|
|
|
|
4 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
|
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 010. ПЗ |
Аркуш
|
|
|
|
|
|
4 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |
||
|
||||||
|
|
|
|
|
РК КНЕУ. КП. 5.091504. 010. ПЗ |
Аркуш
|
|
|
|
|
|
4 |
|
Змін |
Аркуш |
№ документа |
Підпис |
Дата |