Вход на сайт Навигация по сайту Любить и уважать Бонус-счастливчики
|
Содержимое файла " .doc" (без форматирования) ДОДАТОК A Програма для мікроконтролера МК51 ;Iнiцiалiзацiя послiдовного АЦП CS EQU P3.7 ;адреси окремих ліній ;порта Р3 DCLOCK EQU P3.6 DOUT EQU P3.5 ORG 0 ;вектор переривання по рестарті JMP START ;перехiд на мiтку START ORG 03H ;вектор зовнішнього ;переривання INT0 JMP FILTR ORG 00BH ;вектор переривання т/л TCNT0 JMP TAU ORG 01BH JMP ZERO ;вектор переривання т/л TCNT1 START: MOV IE, #10011010B ;установка масок ;переривань MOV TMOD, #00010001B ;установка режиму ;роботи т/л MOV TCON, #00000001B ;установка зовнішнього ;переривання по зрізі MOV TH0, #0F2H ;завантаження (FFFF-TAU) MOV TL0, #053H MOV TH1, #0F8H ;завантаження (FFFF-(TAU-T)) MOV TL1, #02FH SETB P1.7 ;установка біта на 7 виводi п. P1 SETB TCON.4 ; пуск таймера TCNT0 WAIT: JMP WAIT ;чекання переривання TAU: CLR P1.7 ;очистка P1.7 SETB TCON.6 ;пуск таймера TCNT1 RETI ZERO: SETB P1.7 ;установка 1 на P1.7 MOV TH0, #0FCH ;завантаження (FFFF-TAU) MOV TL0, #017H MOV TH1, #0F6H ;завантаження (FFFF-(TAU-T)) MOV TL1, #03BH SETB TCON.4 ;пуск таймера TCNT0 RETI ;Прийом та опрацювання даних, отриманих з PICa FILTR: MOV A,P0 ;завантаження даних про обранний ;фільтр CJNE A,#00H,CHL1 ;перехід якщо не обран ;режим генерування CJNE A,#07H,CHL1 ;перехід якщо не обран ;режим генерування JMP START ;перехід у режим генерування CHL1: CJNE A,#01H,CHL2 ;перехід якщо не обран ФНЧ MOV DPTR, #66H ;завантаження константи ;(адреси ПП) JMP ZAGR CHL2: CJNE A,#02,CHL3 ;перехід якщо не обран ФВЧ МОV DPTR,#73H ;завантаження константи ;(адреси ПП) JMP ZAGR CHL3: MOV DPTR,#80H ;обран фiльтр типу ПФ ;завантаження константи (адреси ПП) ZAGR: MOV R0,#36H MOV R1,#7H ;завантаження лічильникiв ;Перемiщення коефіціентів для обранного фільтра з ПП в РПД MM: CLR A ;скидання акумулятора MOVC A,@A+DPTR ;завантаження в ;акумулятор байта з ПП MOV @R0,A ; завантаження в РПД ;байта з акумулятора INC DPTR ;iнкремент DPTR INC R0 ;iнкремент R0 DJNZ R1,MM ;декремент лічильника і ;перехід якщо не дорівнює нулю ;Очистка областi РПД для вiдлiкiв сигналу, якi поступять з АЦП MOV R3,#7 MOV R0,#20H O4IST: MOV @R0,#00H INC R0 DJNZ R3,O4IST ;Читання вiдлiкiв з АЦП ACP: CLR CS ;старт перетворення з АЦП SETB DCLOCK ; 1-й тактовий імпульс CLR DCLOCK SETB DCLOCK ; 2-й тактовий імпульс CLR DCLOCK SETB DCLOCK ; 3-й тактовий імпульс CLR DCLOCK MOV C, DOUT MOV ACC.7, C ;заносимо 7 біт даних в AСС.7 SETB DCLOCK ;тактовий імпульс СLR DCLOCK MOV C, DOUT MOV ACC.6, C ;заносимо 6 біт даних в AСС.6 SETB DCLOCK ;тактовий імпульс СLR DCLOCK MOV C, DOUT MOV ACC.5, C ;заносимо 5 біт даних в AСС.5 SETB DCLOCK ;тактовий імпульс СLR DCLOCK MOV C, DOUT MOV ACC.4, C ;заносимо 4 біт даних в AСС.4 SETB DCLOCK ;тактовий імпульс СLR DCLOCK MOV C, DOUT MOV ACC.3, C ;заносимо 3 біт даних в AСС.3 SETB DCLOCK ;тактовий імпульс СLR DCLOCK MOV C, DOUT MOV ACC.2, C ;заносимо 2 біт даних в AСС.2 SETB DCLOCK ;тактовий імпульс СLR DCLOCK MOV C, DOUT MOV ACC.1, C ;заносимо 1 біт даних в AСС.1 SETB DCLOCK ;тактовий імпульс СLR DCLOCK MOV C, DOUT MOV ACC.0, C ;заносимо 0 біт даних в AСС.0 SETB DCLOCK ;тактовий імпульс СLR DCLOCK SETB CS ;завершення зчитування MOV 20H,A ;заносимо в РПД MOV R1,#20H CALL MUL ;виклик підпрограми MUL MOV 50H,B ; запис у РПД CALL MUL ;виклик підпрограми MUL MOV 51H,B ; запис у РПД CALL MUL ;виклик підпрограми MUL MOV 52H,B ; запис у РПД CALL MUL ;виклик підпрограми MUL MOV 53H,B ; запис у РПД CALL MUL ;виклик підпрограми MUL MOV 54H,B ; запис у РПД CALL MUL ;виклик підпрограми MUL MOV 55H,B ; запис у РПД CALL MUL ;виклик підпрограми MUL MOV 56H,B ; запис у РПД JMP SUM ;перехiд на мiтку SUM MUL: MOV R0,#36H MOV A,@R0 ;завантаження байта (коеф. ;фільтра) з РПД MOV B,@R1 ;завантаження в розширник ;акумулятора байта з РПД(вiдлiка X) MUL AB ;множення(старший байт ;розміщений в В) INC R0 ;iнкремент R0 INC R1 ;iнкремент R1 RET ;вихід з підпрограми SUM: CLR A ;очистка аккумулятора CLR C ;скидання прапора переносу MOV R3,51H MOV R4,#7 ;лiчильник MOV A,50H ;завантаження в акумулятор ;байта з РПД S1: ADDC A,R3 ;сума байта в акумуляторі і ;байта в регiстрi INC R3 DEC R4 JNC S1 ; перехід якщо прапор переносу ;не встановлений CLR C ; сброс прапора переносу DJNZ R4,S1 MOV R0,#100H MOV @R0,A ;результат уn розмiщуемо у РПД ;за адресою 55H MOV P2,A ;вивод результату на ЦАП ;Органiзацiя лiнii затримки MOV 21H,20H ;запис Хn на мiсто Xn-1 MOV 22H,21H ;запис Хn-1 на мiсто Xn-2 MOV 23H,22H MOV 24H,23H MOV 25H,24H MOV 26H,25H ;запис Хn-14 на мiсто Xn-15 JMP ACP ;перехiд на читання нових вiдлiкiв з ;АЦП Програма для контролеру PIC16C84 list p = 16c84 ; визначення типу МП #include ORG 00H ; вектор переривання по рестарті GOTO START ORG 04H ;вектор переривання по int GOTO KLAVA START BSF STATUS,5 ;вибір першої строрінки MOVLW 1001100B ;завантаження константи в W MOVWF INTCON ;дозвiл переривань BSF STATUS,6 ;вибiр 2 сторiнки MOVLW 00000011B ;завантаження константи MOVWF OPTION ;дiльник 1:15 MOVLW 11111111B ;завантаження константи MOVWF TRISВ ;настроювання порту В на введення MOVLW 00000000B ; завантаження константи MOVWF TRISА ;настроювання порту А на вивод TAU BSF STATUS,5 ;вибір першої строрінки BSF PORTB,0 ;установка біта на ніжку В.0 MOVLW C1H ;завантаження константи в регістр MOVWF TMR0 ;завантаження в таймер PULS BTFS INTCON,2 ;перевірка флага переривання від т/л GOTO PULS ;перехід якщо не дорівнює нулю BCF INTCON,2 ;скидання флага переривання від т/л BCF PORTB,0 ;скидання біта на ніжці порту В.7 MOVLW 63H ;завантаження в регістр константи MOVWF TMR0 ;завантаження в таймер/лічильник ZEROPULS BTFSS INTCON,2 ;перевірка флага переривання від т/л GOTO NOTPULS ;перехід якщо не дорівнює нулю BCF INTCON,2 ;скидання флага переривання від т/л GOTO STPULS ;перехiд на мiтку TAU KLAVA MOVLW FEH MOVWF PORTB ;установка 1 на 1-8 виводи п. В BSF PORTB,1 ;установка одиницi на 1 виводi п. В BSF PORTB,2 ;установка одиницi на 2 виводi п. В BSF PORTB,3 ;установка одиницi на 3 виводi п. В BCF PORTB,0 ;установка нуля на 0 виводi п. В BTFSS PORTB,7 ;якщо бiт 7 п. В установлен, то пропустити наступну команду GOTO M1 ;перехiд на мiтку М1 BTFSS PORTB,6 ;якщо бiт 6 п. В установлен, то пропустити наступну команду GOTO M2 ;перехiд на мiтку М2 BTFSS PORTB,5 ; якщо бiт 5 п. В установлен, то ;пропустити наступну команду GOTO M3 ;перехiд на мiтку М3 BTFSS PORTB,4 ;якщо бiт 4 п. В установлен, то пропустити наступну команду GOTO M4 ;перехiд на мiтку М4 BSF PORTB,0 ;установка одиницi на 0 виводi п. В BSF PORTB,2 ;установка одиницi на 2 виводi п. В BSF PORTB,3 ;установка одиницi на 3 виводi п. В BCF PORTB,1 ;установка нуля на 1 виводi п. В BTFSS PORTB,7 ;якщо бiт 7 п. В установлен, то пропустити наступну команду GOTO M5 ;перехiд на мiтку М5 BTFSS PORTB,6 ; якщо бiт 6 п. В установлен, то пропустити наступну команду GOTO M6 ;перехiд на мiтку М6 BTFSS PORTB,5 ; якщо бiт 5 п. В установлен, то ;пропустити наступну команду GOTO M7 ;перехiд на мiтку М3 BTFSS PORTB,4 ;якщо бiт 4 п. В установлен, то пропустити наступну команду GOTO M8 ;перехiд на мiтку М8 BSF PORTB,0 ;установка одиницi на 0 виводi п. В BSF PORTB,1 ;установка одиницi на 1 виводi п. В BSF PORTB,3 ;установка одиницi на 3 виводi п. В BCF PORTB,2 ;установка нуля на 2 виводi п. В BTFSS PORTB,7 ;якщо бiт 7 п. В установлен, то пропустити наступну команду GOTO M9 ;перехiд на мiтку М9 BTFSS PORTB,6 ; якщо бiт 6 п. В установлен, то пропустити наступну команду CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 7H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт А GOTO TAU ;перехiд в режим генерування M1 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 1H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт А GOTO TAU ;перехiд в режим генерування M2 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 2H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт A GOTO TAU ;перехiд в режим генерування M3 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 3H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт GOTO TAU ;перехiд в режим генерування M4 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 7H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт А GOTO TAU ;перехiд в режим генерування M5 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 7H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт GOTO TAU ;перехiд в режим генерування M6 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 7H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт А GOTO TAU ;перехiд в режим генерування M7 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 7H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт А GOTO TAU ;перехiд в режим генерування M8 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 7H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт А GOTO TAU ;перехiд в режим генерування M9 CALL DREB ;визов п/п DREB BTFSS INTCON,0 ;якщо бiт 0 INTCON установлен,тобто ;логiчний рiвень на ножцi порта В змiнився,то ;пропустити наступну команду GOTO TAU ;перехiд в режим генерування MOVLW 7H ;загрузити константу в W MOVWF PORTA ;загрузити код нажатоi кл. в порт А GOTO TAU ;перехiд в режим генерування DEL1MS MOVWF 14DH ;п/п 1 мс затримки K1 DECFSZ 14DH,F ;декремент та пропустити наступну ;команду, якщо 0 GOTO K1 RETURN DREB CALL DEL1MS ;затримка на 10 мс CALL DEL1MS CALL DEL1MS CALL DEL1MS CALL DEL1MS CALL DEL1MS CALL DEL1MS CALL DEL1MS CALL DEL1MS CALL DEL1MS RETURN Програма для мікроконтролера AT90S2313 .inlude “2313def.inc” org 0 ;вектор переривання по рестарті rjmp MAIN org 0X04H ;вектор зовнішнього переривання int rjmp PULSE org 0X07H ;вектор переривання по переповненню таймера ;лічильника RJMP PRER ;Вектор INT0 MAIN: LDI R16,$F2 ;загрузка константи у регiстр LDI R17,$53 ;загрузка константи у регiстр LDI R18,$F8 ;загрузка константи у регiстр LDI R19,$2F ;загрузка константи у регiстр LDI R20,$FF ;загрузка константи у регiстр OUT DDRB,R20 ;програмування порта В на вивод LDI R21,$70 ;загрузка константи у регiстр OUT DDRD,R21 ;програмування 4-6 нiжок порта D на вивод, ;а 0-3 - на ввод LDI R22,$0 OUT TCCR1A,R22 OUT TCCR1B,R22 LDI R23,$01 OUT OCIE1A ,R23;дозвiл переривань по совпадiнню LDI R25,$1 bset int0 ;Дозвіл переривання INT0 sei ;Дозвіл пареривань ;Iнiцiалiзацiя РКI типу DV-15160 INICDV16: OUT PORTB,R20 CBI PORTD,4 ;R/W=0 CBI PORTD,5 ;RS=0 CBI PORTD,6 ;E=0 ;команда установки функцiй CBI PORTD,4 ;R/W=0 CBI PORTD,5 ;RS=0 CBI PORTD,6 ;E=0 LDI R24,$30 ;загрузка 00110000В у регiстр OUT PORTB,R24 ;DL=0,N=0,F=0 RCALL IMPULS1 ;iмпульс E ;команда керування увiмкненням/вимкненням дисплею CBI PORTD,4 ;R/W=0 CBI PORTD,5 ;RS=0 CBI PORTD,6 ;E=0 LDI R26,$30 ;загрузка 00001100В у регiстр OUT PORTB,R26 ;D=1,C=0,B=0 RCALL IMPULS1 ;iмпульс E ;команда автоiнкремента CBI PORTD,4 ;R/W=0 CBI PORTD,5 ;RS=0 CBI PORTD,6 ;E=0 LDI R27,$ 0C ;загрузка 00000110В у регiстр OUT PORTB,R27 ;1/D=1,S=0 RCALL IMPULS1 ;iмпульс E RCALL DEL16MS ;затримка на 16 мс ;п/п затримки на 1 мс DEL1MS: LDI R28,$11D DEC R28 BREQ M ;перехiд на М, якщо не дорiвнюе 0 RJMP DEL1MS M: RET ;п/п затримки на 4 мс DEL4MS: RCALL DEL1MS RCALL DEL1MS RCALL DEL1MS RCALL DEL1MS RET ;п/п затримки на 4 мс DEL16MS: RCALL DEL4MS RCALL DEL4MS RCALL DEL4MS RCALL DEL4MS RET ;п/п, яка формуе iмпульс на входi E IMPULS: SBI PORTD,6 NOP NOP NOP NOP CBI PORTD,6 RET ;п/п, яка формуе iмпульс на входi E з наступною затримкой 1 мс IMPULS1: RCALL IMPULS ;формування Е RCALL DEL1MS ;затримка на 1 мс RET ;Настройка iндiкатора закiнчена ;Генератор на таймерi/лiчильнику GEN_HIGH: OUT TCNT1H,R16 OUT TCNT1L,R17 SBI PORTD,3 ;установимо одиницю на 3 пiн порту D LDI R29,$1 OUT TCCR1B,R29 ;пуск Т/Л1 з СК-частотою WAIT0: RJMP WAIT0 GEN_LOW: LDI R30,$0 OUT TCCR1B,R29 ;16-разрядний Т/Л остановлений OUT TCNT1H,R17 OUT TCNT1L,R18 CBI PORTD,3 ;установимо нуль на 3 пiн порту D OUT TCCR1B,R29 ;пуск Т/Л1 з СК-частотою WAIT1: RJMP WAIT1 ;Прийом даних з PICa PRER: sbis pinb,1 ;Проопуск якщо біт встановлен rjmp FN4 sbis pinb,2 ;Проопуск якщо біт встановлен rjmp FV4 rjmp PF IN R31,PORTD ;загрузка даних з порта D у R31 CPI R31,$0 ;зрiвнення з константою BREQ GEN_HIGH ;перехiд, якщо дорiвнюе CPI R31,$7 ;зрiвнення з константою BREQ GEN_HIGH ;перехiд, якщо дорiвнюе CPI R31,$1 ;зрiвнення з константою BREQ FN4 ;перехiд, якщо дорiвнюе CPI R31,$2 ;зрiвнення з константою BREQ FV4 ;перехiд, якщо дорiвнюе RJMP PF RJMP MAIN FN4: CBI PORTD,4 ;очистка дiсплея CBI PORTD,5 CBI PORTD,6 OUT PORTB,R29 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 LDI R16,$ 4C ;код L, тобто 01001100В OUT PORTB,R16 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 LDI R17,$ 46 ;код F, тобто 01000110В OUT PORTB,R17 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 LDI R18,$ 31 ;код 1, тобто 00101001В OUT PORTB,R16 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 ;код 1, тобто 01001100В OUT PORTB,R18 RCALL IMPULS1 RCALL DEL16MS RJMP MAIN FV4: CBI PORTD,4 ;очистка дiсплея CBI PORTD,5 CBI PORTD,6 OUT PORTB,R29 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 LDI R19,$ 48 ;код H, тобто 01001000В OUT PORTB,R19 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 ;код F, тобто 01000110В OUT PORTB,R17 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 ;код 1, тобто 00101001В OUT PORTB,R16 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 ;код 1, тобто 01001100В OUT PORTB,R18 RCALL IMPULS1 RCALL DEL16MS RJMP MAIN PF: CBI PORTD,4 ;очистка дiсплея CBI PORTD,5 CBI PORTD,6 OUT PORTB,R29 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 LDI R20,$ 50 ;код P, тобто 01010000В OUT PORTB,R20 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 ;код F, тобто 01000110В OUT PORTB,R17 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 ;код 1, тобто 00101001В OUT PORTB,R16 RCALL IMPULS1 RCALL DEL16MS CBI PORTD,4 SBI PORTD,5 ;RS=1 CBI PORTD,6 ;код 1, тобто 01001100В OUT PORTB,R18 RCALL IMPULS1 RCALL DEL16MS RJMP MAIN Змн. Арк. № докум. Підпис Дата Арк. РТ92.000000.09 ПЗ |
Посетителей: 1, из них зарегестрированных: 0, гостей: 1 Зарегистрированные пользователи: Подробно | Страница сгенерирована за 1.7481 сек. |