Мероприятия по технике безопасности
Меры безопасности при производстве электромонтажных работ Предприятия радиоэлектронной промышленности оснащаются большим количеством разнообразных, а во многих случаях весьма сложных машин, станков и механизмов, облегчающих труд рабочего. Однако все они могут представлять для обслуживающих их рабочих определенную опасность. Это прежде всего относится к машинам, станкам и механизмам, приводимым в движение электрическим током, отдельные элементы которых находятся под давлением сжатого воздуха, пара или газа. Правильная организация труда, четкость и аккуратность в работе способствует безопасности рабочих на производстве. При выполнении сборочных, монтажных и намоточных работ необходимо строго соблюдать правила техники безопасности. Общие типовые требования. 1. К самостоятельному выполнению работ следует приступать только после прохождения инструктажа на рабочем месте и усвоения безопасных приемов и методов их выполнения. 2. Выполнять необходимо только ты работу, которая поручена администрацией. 3. При переводе на новый вид работы, приступать к работе можно только после получения от мастера соответствующего инструктажа о безопасных способах её выполнения. 4. Работу следует выполнять только после на исправном оборудовании, исправными инструментами и приспособлениями. 5. Инструмент должен использоваться только по его прямому назначению. 6. Обо всех замеченных неисправностях оборудования и возникших во время работы опасностях для окружающих следует немедленно сообщить мастеру. 7. Запрещается поднимать вручную тяжести, превышающие допустимые нормы: 20 кг. – для женщин и 50 кг. – для мужчин.
8. В случае заболевания или получения травмы следует прекратить работу, сообщить об этом мастеру и обратиться в медпункт за получением первой медицинской помощи. 9. В помещениях, где производятся работы, запрещается хранить личные вещи, принимать пищу и пить воду. 10. Необходимо строго соблюдать правила передвижения в цехах и на территории предприятия. При движении транспорта и перемещении грузов кранами следует отходить в сторону с пути их движения. Запрещается проходить и стоять под поднятым грузом. 11. Рабочая одежда не должна стеснять движений и иметь развевающихся и свисающих концов. На голову следует надеть плотно облегающий головной убор, при этом необходимо убрать под него волосы. 12. Перед началом работы следует внимательно осмотреть рабочее место и привести его в порядок, для чего: убрать все лишние и мешающие работе предметы; проверить наличие инструментов; требующиеся инструменты, приспособления, детали и материал расположить в удобном и безопасном порядке, придерживаясь следующего принципа: то, что берется левой рукой, должно находиться слева, а то, что правой – справа; подготовить индивидуальные средства защиты и проверить их исправность; установить сиденье в положение, удобное для работы, чтобы при выполнении рабочих операций не приходилось делать лишних движений руками и корпусом тела; расположить светильник так, чтобы при выполнении работы не была видна нить накаливания, и свет не слепил глаза. 13. В процессе работы необходимо следить за исправностью используемого оборудования, инструментов и приспособлений; поддерживать на рабочем места чистоту и порядок; не отвлекаться самому и не отвлекать от работы других посторонними разговорами и делами. 14. В случае невыполнения требований настоящей инструкции, виновные несут ответственность согласно правилам внутреннего трудового распорядка.
При написании дипломного проекта была создана принципиальная схема устройства. На её основе была разработана печатная плата, отличающаяся малыми габаритами, небольшим количеством элементов, адаптированная под заданные условия эксплуатации. Исходя из этого можно говорить о высокой надежности системы. Кроме того, текст программы, написанный для устройства, отличается от аналогов бесступенчатым изменением момента искрообразования и возможностью регулировки устройства в широких пределах. Так же существенным отличием данного программного обеспечения является возможность работы с любой моделью двигателя. Несомненным плюсом разработанного устройства, кроме вышеперечисленных, является невысокая стоимость, а следовательно, значительная конкурентоспособность.
Список литературы
1. Быков К.П., Грищенко П.В. «Мотоциклы «Урал», «Днепр». Эксплуатация и ремонт». Чернигов 2004 208с. 2. Вярочкина Г.О. «Радиоэлектронная аппаратура и приборы. Монтаж и регулировка» М. 2004 352с. 3. Гаряев Л. «Нюансы настройки систем зажигания с датчиком Холла.» МОТО. 2004. №6. с100. 4. Каталог «Промэлектроника. Активные элементы» 2003 108с. 5. Каталог «Промэлектроника. Пассивные элементы» 2003 114с. 6. Косарев С.Н. «Руководство по ремонту автомобилей ВАЗ – 2121 и ВАЗ 21219» М. 1998 184с. 7. Самсонов В.С., Вяткин М.А. «Экономика предприятий энергетического комплекса». М. 2001 315с. 8. Яценков В.С. «Микроконтроллеры MicroCHIP практическое руководство» М. 2005 280с.
П риложениеА
Программа микроконтроллера системы управления механизмом зажигания. ; Контроллер: PIC16F84, 4MHz ; Контроллер listp=16f84 ; Конфигурация __CONFIG3ff9h ; Параметры #define TMR_VALUE.182; Квантование таймера 100 мкс ; Назначение портов ввода/вывода #define pCOILPortB,2; Выход управления коммутатором (RB2) ; Направление работы портов ввода/вывода (0 вывод, 1 ввод) #define PORTB_IO0xF2; Порт B (11110010) RB1 и RB4RB7 работают на вход, остальные на выход. ; Сбросовые состояния портов #define PORTB_RESET0x00; Предустановка портов B (Обнуление) ; Системные константы Fsrequ 0x04 Indf equ 0x00 Tmr0 equ 0x01; Регистр TMR0. OptionR equ 0x01; Option банк1 Status equ 0x03; Регистр Status PortB equ 0x06; Порт B TrisB equ 0x06; Tris B Банк1 IntCon equ 0x0B; Регистр IntCon EEData equ 0x08; EEPROM данные EECon1 equ 0x08; EECON1 банк1. EEAdr equ 0x09; EEPROM адрес EECon2 equ 0x09; EECON2 банк1.
; Память данных Flags equ 0x10; Флаги состояния MXHequ 0x0C; Старший байт целой части переменной Х MXLequ 0x0D; Младший байт целой части переменной Х EXequ 0x0E; Дробная часть Х, 09; BHequ 0x1D; Старший байт переменной В BLequ0x1E; Младший байт переменной В TimerH equ 0x1A; Счетчик продолжительности сигнала от датчика Холла, старший байт TimerM equ 0x1B; Средний байт TimerL equ 0x1C; Младший байт Secequ 0x11; Счётчик арифметических операций WrtH equ 0x12; Счётчик времени записи в EEPROM, старший байт WrtL equ 0x13; Младший байт MulH equ0x14;Переменные арифметических операций MulL equ0x15 MulM equ0x16 TmpH equ0x17 TmpM equ0x18 TmpL equ 0x19 Mul1Lo equ0x20 Mul1Hi equ0x21 ResHi equ0x22 DivLo equ0x0F DivHi equ0x1F Res1 equ0x23 Res2 equ0x24 Res3 equ0x25 Temp equ0x26 Temp1 equ0x27 Temp2 equ0x28 Temp3 equ0x29 Cntequ0x2A; Счётчик арифметических операций Res11 equ0x2B Res22 equ0x2C Res33 equ0x2D TmpW equ 0x2E; Регистр для сохранения состояния W (Аккумулятора) TmpStatus equ 0x2F; Регистр для сохранения состояния Status Системные флаги W equ 0; Результат направить в аккумулятор. F equ 1; Результат направить в регистр. C equ 0; Бит флага переносазаема. Z equ 2; Бит флага нулевого результата. RP0 equ 5; Бит выбора банка. GIE equ 7; Бит глобального разрешения прерываний. T0IE equ 5 T0IF equ 2 ; Битовые переменные #define bLastStateFlags,0; Последнее состояние датчика Холла #define bSensFlags,1; Флаг состояния датчика Холла после программного фильтра #define bINCBPortB,7; Флаг нажатия кнопки "Увеличить В" #define bDECBPortB,6; Флаг нажатия кнопки "Уменьшить В" #define bINCXPortB,5; Флаг нажатия кнопки "Увеличить Х" #define bDECXPortB,4; Флаг нажатия кнопки "Уменьшить Х" #defineTmpFlags,2; Флаг арифметических операций ; Вектор сброса ORG0x0000 goto Start; Переходим к началу программы ; Вектор прерываний ORG0x0004 ; Interrupt ; Описание: Прерывание от TMR0. Измерение времени прохода шторки по сигналу с датчика Холла. Interrupt; movwfTmpW; Сохраняем состояние W и Status в регистры TmpW и TmpStatus swapfStatus,W movwfTmpStatus movlwTMR_VALUE; Квантование таймера movwfTmr0 bcfIntCon,T0IF; Сбрасываем флаг прерывания от таймера movfPortB,W; Программный фильтр по входу датчика Холла xorwfFlags,W btfssbSens; Проверяем флаг датчика (1 шторка в датчике, 0 вне датчика) goto _Low; Если 0 преходим btfscbLastState; Проверяем предидущее состояние датчика
goto _HighToHigh; Если 1 преходим _LowToHigh; Шторка вошла в датчик bSens=1 bLastState=0 bsfbLastState; Обновляем данные о состоянии датчика bLastState=1 bsfpCOIL; Включаем комутатор (Выставляем бит в RB2) PLUS00 incf TimerL,F; Начинаем отсчёт времени (TimerL(H,M) + 1) btfss Status,Z goto YES00 incf TimerM,F btfss Status,Z goto YES00 incf TimerH,F YES00 goto _ExitInterrupt; Завершаем прерывание _HighToHigh; Шторка уже в датчике bSens=1 bLastState=1 PLUS01 incf TimerL,F; Продолжаем отсчёт времени (TimerL(H,M) + 1) btfss Status,Z goto YES01 incf TimerM,F btfss Status,Z goto YES01 incf TimerH,F YES01 goto _ExitInterrupt _Low; Шторка вне датчика bSens=0 btfssbLastState; Проверяем предидущее состояние датчика goto _LowToLow _HighToLow; Шторка вышла из датчика bSens=0 bLastState=1 bcfbLastState; Обновляем данные о состоянии датчика bLastState=0 call CalculateSparkTime; Переходим к вычислению функции Y=f(T) goto _ExitInterrupt _LowToLow; Шторка уже вне датчика _ExitInterrupt DecWrt DEC002 incf WrtH,W; Проверяем было ли изменение констант, если было (WrtH<>0xFF), то осчитываем время до записи в память (2 сек) btfss Status,Z goto DEC003 goto OK00 DEC003 decf WrtL,F movlw0xFF subwfWrtL,W btfss Status,Z goto OK00 decf WrtH,F movlw0xFF subwfWrtH,W btfss Status,Z goto OK00 movlw0xFF; Выставляем 0хFF в WrtH (признак изменения констант) movwfWrtH clrfWrtL call WriteC; Истекло время до записи изменённых переменных в память, переход на подпрограмму записи OK00 swapfTmpStatus,W; Восстанавливаем соотояние W и Status и выходим из прерывания movwfStatus swapfTmpW,F swapfTmpW,W retfie ; Start ; Описание: Начало программы, инициализация контроллера и установка в начальное состояние Start; clrwdt clrfIntCon; Обнуляем регистр прерываний bsfStatus,RP0; Выбор банка памяти 1 movlwPORTB_IO movwfTrisB movlw0x88 movwfOptionR bcfStatus,RP0; Выбор банка памяти 0 movlwPORTB_RESET movwfPortB clrf TimerH clrf TimerM clrf TimerL movlw0xFF movwfWrtH clrfWrtL movfPortB,W; Выставляем флаги в начальное состояние andlw0xF2 movwfFlags movlwTMR_VALUE; Квантование таймера movwfTmr0 ; Чтение констант из памяти ; movlw 0; Записать в регистр W константу 0 (адрес ячейки в памяти). movwf EEAdr; Скопировать 0h из регистра W в регистр EEAdr. bsf Status,RP0; Переход в первый банк. bsf EECon1,0; Инициализировать чтение. bcf Status,RP0; Переход в нулевой банк. movf EEData,W; Скопировать число из ячейки EEPROM с адресом 0h в регистр W. movwf MXH; Скопировать число из регистра W в регистр MXH. nop; Пустой оператор (ожидание) movlw 1 movwf EEAdr bsf Status,RP0 bsf EECon1,0 bcf Status,RP0 movf EEData,W movwf MXL nop movlw 2 movwf EEAdr bsf Status,RP0 bsf EECon1,0 bcf Status,RP0 movf EEData,W movwf EX nop movlw 3 movwf EEAdr bsf Status,RP0 bsf EECon1,0 bcf Status,RP0 movf EEData,W movwf BH nop movlw 4 movwf EEAdr bsf Status,RP0 bsf EECon1,0 bcf Status,RP0 movf EEData,W movwf BL movlw0xA0; Разрешаем прерывания от TMR0, и прерывания глобально, сбрасываем флаги прерываний movwfIntCon Cycle; Главный цикл программы bsfIntCon,T0IE; Разрешаем прерывания от TMR0 bsfIntCon,GIE; Разрешаем прерывания глобально movfPortB,W xorwfFlags,W btfsc bINCB;Если RB7 = 1, то переходим к увеличению переменной В goto IncB
btfsc bDECB;Если RB6 = 1, то переходим к уменьшению переменной В goto DecB btfsc bINCX;Если RB5 = 1, то переходим к увеличению переменной Х goto IncX btfsc bDECX;Если RB4 = 1, то переходим к уменьшению переменной Х goto DecX gotoCycle IncB; Подпрограмма увеличения переменной В PLUS02 incf BL,F btfss Status,Z goto YES02 incf BH,F btfss Status,Z goto YES02 movlw0xFF movwfBH movwfBL YES02 gotoYES07 DecB; Подпрограмма уменьшения переменной В PLUS03 decf BL,F movlw0xFF subwfBL,W btfss Status,Z goto YES03 decf BH,F movlw0xFF subwfBH,W btfss Status,Z goto YES03 clrfBH clrfBL YES03 gotoYES07 IncX; Подпрограмма увеличения переменной Х PLUS04 incf EX,F movlw0x0A subwfEX,W btfss Status,Z gotoYES05 clrfEX PLUS05 incf MXL,F btfss Status,Z goto YES05 incf MXH,F btfss Status,Z goto YES05 movlw0xFF movwfMXH movwfMXL movlw0x09 movwfEX YES05 gotoYES07 DecX; Подпрограмма уменьшения переменной Х PLUS06 decf EX,F movlw0xFF subwfEX,W btfss Status,Z goto YES07 decf MXL,F movlw0xFF subwfMXL,W btfss Status,Z goto YES06 decf MXH,F movlw0xFF subwfMXH,W btfss Status,Z goto YES06 clrfMXH clrfMXL clrfEX gotoYES07 YES06 movlw0x09 movwfEX YES07; Выход из подпрограм изменения переменных, инициализация отсчёта времени для записи в память (2 сек, 0x4E20) movlw0x4E movwfWrtH movlw0x20 movwfWrtL nop; Ожидание отпускания кнопок изменения переменных и переход на главный цикл программы nop nop nop gotoCycle ; Сохранение констант в энергонезависимую память ;WriteC Bcf IntCon,GIE; Глобальный запрет прерываний. bcf Status,RP0; Переход в нулевой банк. movlw 0; Записать в регистр W константу 0 (адрес ячейки в памяти). movwf EEAdr; Скопировать константу 0 из регистра W в регистр EEAdr. movf MXH,W; Скопировать число из регистра МХН в регистр W. movwf EEData; Скопировать число из регистра W в ячейку EEPROM с адресом 0. bsf Status,RP0; Переход в первый банк. bsf EECon1,2; Разрешить запись. movlw 0x55; Обязательная movwf EECon2; процедура movlw 0xAA; при записи. movwf EECon2; " bsf EECon1,1; " WR0 Btfsc EECon1,1;Ожидание записи gotoWR0 bcf EECon1,4; Сбросить флаг прерывания по окончании записи в EEPROM. bcf Status,RP0 movlw 1 movwf EEAdr movf MXL,W movwf EEData bsf Status,RP0 bsf EECon1,2 movlw 055h movwf EECon2 movlw 0AAh movwf EECon2 bsf EECon1,1 WR1 btfscEECon1,1 gotoWR1 bcf EECon1,4 bcf Status,RP0 movlw 2 movwf EEAdr movf EX,W movwf EEData bsf Status,RP0 bsf EECon1,2 movlw 055h movwf EECon2 movlw 0AAh movwf EECon2 bsf EECon1,1 WR2 btfscEECon1,1 gotoWR2 bcf EECon1,4 bcf Status,RP0 movlw 3 movwf EEAdr movf BH,W movwf EEData bsf Status,RP0 bsf EECon1,2 movlw 055h movwf EECon2 movlw 0AAh movwf EECon2 bsf EECon1,1 WR3 btfscEECon1,1 gotoWR3 bcf EECon1,4 bcf Status,RP0 movlw 4 movwf EEAdr movf BL,W movwf EEData bsf Status,RP0 bsf EECon1,2 movlw 055h movwf EECon2 movlw 0AAh movwf EECon2 bsf EECon1,1 WR4 btfscEECon1,1 gotoWR4 bcf EECon1,4 return; Выход из подпрограммы записи в память ;Арифметические подпрограммы SUM00; Операция сложения регистров MulL, MulM, MulH и TmpL, TmpM, TmpH, с учётом разряда movf MulL,W addwf TmpL,F btfss Status,C goto SUM01 incf TmpM,F btfss Status,Z goto SUM01 incf TmpH,F SUM01 movf MulM,W addwf TmpM,F btfsc Status,C incf TmpH,F movf MulH,W addwf TmpH,F return MIN00; Операция вычитания регистров MulL, MulM, MulH и TmpL, TmpM, TmpH, с учётом разряда movf MulL,W subwf TmpL,F btfsc Status,C goto MIN01 btfsc Status,Z goto MIN01 decf TmpM,F movlw0xFF subwfTmpM,W btfss Status,Z goto MIN01 decf TmpH,F movlw0xFF subwfWrtH,W btfss Status,Z goto MIN01 clrfTmpH clrfTmpM clrfTmpL MIN01 movf MulM,W subwf TmpM,F btfsc Status,C goto MIN02 btfsc Status,Z goto MIN02 decf TmpH,F movlw0xFF subwfTmpH,W btfss Status,Z goto MIN02 clrfTmpH clrfTmpM MIN02 movf MulH,W subwf TmpH,F btfsc Status,C goto MIN03 btfsc Status,Z goto MIN03 clrfTmpH MIN03; Операция умножения регистров MulL, MulH на множитель MulM, с учётом разряда return MUL00 movlw0x09 movwfSec movfMulM,W clrfMulH bcfStatus,C MUL01 rrfMulH,F rrfMulL,F btfssStatus,C gotoMUL02 addwfMulH,F MUL02 decfszSec,F gotoMUL01 return Div24_16; Операция деления регистров Mul1L, Mul1H, ResHi на делитель DivLo, DivHi, с учётом разряда clrf Temp clrf Temp2 clrf Temp3 clrf Cnt clrf Res1 clrf Res2 clrf Res3 movlw 0xf0 andwf DivHi,0 btfsc Status,Z goto chknxt movf ResHi,0 movwf Temp2 movf Mul1Hi,0 movwf Temp movlw.2 movwf Sec goto StartDiv chknxt movf DivHi,1 btfsc Status,Z goto chknxt1 movlw 0xf0 andwf ResHi,0 movwf Temp2 swapf Temp2,1 movlw 0x0f andwf ResHi,0 movwf Temp swapf Temp,1 movlw 0xf0 andwf Mul1Hi,0 movwf Temp3 swapf Temp3,0 iorwf Temp,1 clrf Temp3 movlw.3 movwf Sec goto StartDiv chknxt1 movlw 0xf0 andwf DivLo,0 btfsc Status,Z goto chknxt2 movf ResHi,0 movwf Temp movlw.4 movwf Sec goto StartDiv chknxt2 movlw 0xf0 andwf ResHi,0 movwf Temp swapf Temp,1 movlw.5 movwf Sec StartDiv sbagn call Sub btfsc Tmp goto FinSub incf Cnt,1 goto sbagn Sub bcf Tmp movf DivLo,0 subwf Temp,1 btfsc Status,C goto sub2nd decf Temp2,1 movlw 0xff subwf Temp2,0 btfss Status,Z goto sub2nd decf Temp3,1 movlw 0xff subwf Temp3,0 btfsc Status,Z bsf Tmp sub2nd movf DivHi,0 subwf Temp2,1 btfsc Status,C return decf Temp3,1 movlw 0xff subwf Temp3,0 btfsc Status,Z bsf Tmp return FinSub movf DivLo,0 addwf Temp,1 btfss Status,C goto add2nd incfsz Temp2,1 goto add2nd incf Temp3,1 add2nd movf DivHi,0 addwf Temp2,1 btfss Status,C goto jpqm incf Temp3,1 jpqm bcf Status,C rrf Sec,0 movwf Fsr movlw Res1 addwf Fsr,1 btfss Sec,0 goto nhjuq swapf Cnt,0 iorwf Indf,1 goto ffr nnhjuq movf Cnt,0 iorwf Indf,1 ffr decf Sec,1 movlw 0xff subwf Sec,0 btfss Status,Z goto notFin goto FinDiv notFin bcf Status,C rlf Temp,1 rlf Temp2,1 rlf Temp3,1 bcf Status,C rlf Temp,1 rlf Temp2,1 rlf Temp3,1 bcf Status,C rlf Temp,1 rlf Temp2,1 rlf Temp3,1 bcf Status,C rlf Temp,1 rlf Temp2,1 rlf Temp3,1 bcf Status,C rrf Sec,0 movwf Fsr movlw Mul1Lo addwf Fsr,1 btfsc Sec,0 goto nnhq movlw 0x0f andwf Indf,0 iorwf Temp,1 goto jjddsak nnhq swapf Indf,0 andlw 0x0f iorwf Temp,1 jjddsak clrf Cnt goto sbagn FinDiv; Операция округления при делении bcf Status,C rrf DivHi,1 rrf DivLo,1 movf DivHi,0 subwf Temp2,0 btfss Status,C goto dsgfadsg btfss Status,Z goto cxv movf DivLo,0 subwf Temp,0 btfss Status,C goto dsgfadsg cxv incfsz Res1,1 goto dsgfadsg incfsz Res2,1 goto dsgfadsg incf Res3,1 dsgfadsg movf Res1,0 movwf Mul1Lo movf Res2,0 movwf Mul1Hi movf Res3,0 movwf ResHi return ;Подпрограмма расчёта времени удержания сигнала коммутатору Y=f(T) (Y=T*XB) CalculateSparkTime; clrfTmpH clrfTmpM clrfTmpL movfTimerL,W; Множим TimerL(H,M) на MX(L,H) movwfMulL movfMXL,W movwfMulM callMUL00 movfMulH,W movwfMulM clrfMulH callSUM00 movfTimerM,W movwfMulL movfMXL,W movwfMulM callMUL00 movfMulL,W movwfMulM clrfMulL callSUM00 movfTimerH,W movwfMulL movfMXL,W movwfMulM callMUL00 movfMulL,W movwfMulH clrfMulL clrfMulM callSUM00 movfTimerL,W movwfMulL movfMXH,W movwfMulM callMUL00 movfMulL,W movwfMulM clrfMulL callSUM00 movfTimerM,W movwfMulL movfMXH,W movwfMulM callMUL00 movfMulL,W movwfMulH clrfMulL clrfMulM callSUM00;Делим TimerL(H,M) на 10 movf TimerH,W;Старший байт делимого movwf ResHi movf TimerM,W;Средний байт делимого movwf Mul1Hi movf TimerL,W;Младший байт делимого movwf Mul1Lo movlw 0x00;Старший байт делителя movwf DivHi movlw 0x0A;Младший байт делителя movwf DivLo callDiv24_16 movfTmpH,W movwfTimerH movfTmpM,W movwfTimerM movfTmpL,W movwfTimerL clrfTmpH clrfTmpM clrfTmpL; Множим TimerL(H,M) на EX movfMul1Lo,W movwfMulL movfEX,W movwfMulM callMUL00 movfMulH,W movwfMulM clrfMulH callSUM00 movfMul1Hi,W movwfMulL movfEX,W movwfMulM callMUL00 movfMulL,W movwfMulM clrfMulL callSUM00 movfResHi,W movwfMulL movfEX,W movwfMulM callMUL00 movfMulL,W movwfMulH clrfMulL clrfMulM callSUM00 movfTmpH,W movwfMulH movfTmpM,W movwfMulM movfTmpL,W movwfMulL movfTimerH,W movwfTmpH movfTimerM,W movwfTmpM movfTimerL,W movwfTmpL callSUM00; Вычитаем из TimerL(H,M) B(L,H) clrfMulH movfBH,W movwfMulM movfBL,W movwfMulL callMIN00 movfTmpH,W movwfTimerH movfTmpM,W movwfTimerM movfTmpL,W movwfTimerL; Подпрограмма отсчёта времени удержания комутатора DecTime bsfpCOIL; Подаём сигнал на комутатор (1 в RB2) movlw0xFF; Отсчитываем квант времени таймера movwfSec movlwTMR_VALUE subwfSec,F PAUSE decfszSec,F gotoPAUSE PLUS08 decf TimerL,F; Начинаем отсчёт времени (TimerL(H,M) 1) movlw0xFF subwfTimerL,W btfss Status,Z goto YES08 decf TimerM,F movlw0xFF subwfTimerM,W btfss Status,Z goto YES08 decf TimerH,F movlw0xFF subwfTimerH,W btfss Status,Z goto YES08 clrf TimerH; Отсчёт времени (TimerL(H,M) 1) завершён clrf TimerM clrf TimerL bcfpCOIL;; Выставляем 0 в RB2 (отключаем сигнал коммутатору) return YES08 gotoDecTime end
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|