В общем согласно задания я должен был сделать секундомер на PIC16F84A. По нажатию на кнопку START секундомер активизируется, при нажатии на STOP соответственно останавливается, а также при нажатии на кнопку ZAPOMINANIE происходит запоминание текущего времени на секундомере(интервал), количество таких запоминаний должно быть 4. Ну и при одновременном нажатии STOP и START(1 раз - первый интервал, 2 раз - второй, и т.д). В общем вот такой код я смог набрасать, но почему-то он не работает так как должен. Буду очень благодарен помощи. Ниже приведу код программы. LIST p=16F84A #include <p16f84a.inc> INDICATOR4 equ 0x1C INDICATOR3 equ 0x1D INDICATOR2 equ 0x1E INDICATOR1 equ 0x1F COUNT equ 0x2C Reg_1 equ 0x0C Reg_2 equ 0x0D Reg_3 equ 0x0E DlyaIND4 equ 0x3C DlyaIND3 equ 0x3D DlyaIND2 equ 0x3E DlyaIND4_1 equ 0x3C DlyaIND3_1 equ 0x3D DlyaIND2_1 equ 0x3E DlyaIND4_2 equ 0x3F DlyaIND3_2 equ 0x4C DlyaIND2_2 equ 0x4D DlyaIND4_3 equ 0x4E DlyaIND3_3 equ 0x4F DlyaIND2_3 equ 0x5C COUNTERS equ 0x5E org 0x00 bsf STATUS,RP0 movlw b'10000000' movwf TRISB movlw b'11000' movwf TRISA bcf STATUS,RP0 Proverka1 movlw .0 movwf INDICATOR4 movwf INDICATOR3 movwf INDICATOR2 movwf INDICATOR1 movlw .1 movwf COUNT ;0000 movlw b'11111111' movwf PORTB btfss PORTB,7 goto two btfss PORTA,3 call abcf goto START two btfsc PORTA,4 goto out goto P1 P1 btfss PORTB,7 goto P1 goto START
Возможно и не дятел. В ответственных системах контакты ставят на размыкание. Например грибок аварийной остановки оборудования. Вот и высокий активный уровень. Это связано с тем, что при нажатии контакты могут и не замкнуться, а вот разомкнутся всегда. И если провод оборван , то тоже не запустится.
_________________ __________________ Все, что нельзя запрограммировать на ассемблере, приходится паять
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
а кто сказал чтоэто было в ТЗ ? дум аю это он так решил сам кстати резисторы в сегмеентах надо ставить еще насчнт кнопок думаю это на усмотрение разработчика (а не заказчика) в ряде случаев вообше делается дин опрос одновремено с разверткой индикатора *(тоесть всесто 3 портов нужен 1!) если будет фыотофинишь то там уже не кнопка будет а оптрон что до размыкания это опционално можно реншить в програме выбрав инверсию наприер через ичейку ипром или минюшку калибровок
Добавлено after 3 minutes 39 seconds: кстати на схеме нет ккварка неясно неужели на внутренем генке можно чтото замерять в интервалах или периодах обычно нужен не простой мусорный кварц 12-14м а нацело деляший ся на 2 в степени Эн
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
На Си только библиотеки скрыты, а ежли читать с полным составом, включая те библиотеки... . в моих прожках также сделано - вот ВЕСЬ основной файл (ежли нет желания лазить по "пристежным библиотекам" - не читайте их) Спойлер;********************************************************************** ; This file is a basic code template for object module code * ; generation on the PIC16F628A. This file contains the * ; basic code building blocks to build upon. * ; * ; Refer to the MPASM User's Guide for additional information on * ; features of the assembler and linker (Document DS33014). * ; * ; Refer to the respective PIC data sheet for additional * ; information on the instruction set. * ; * ;********************************************************************** ; * ; Filename: ktp.asm * ; Date: 14.07.2017 - * ; File Version: * ; * ; Author: BORIS A KRUTITSKIY * ; Company: KOBRA SOFT * ; * ; * ;********************************************************************** ; * ; Files required: P16F628A.INC * ; * ;********************************************************************** ; * ; Notes: * ; * ;********************************************************************** ; list p=16F628A ; list directive to define processor #include <p16F628A.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
; '__CONFIG' directive is used to embed configuration word within .asm file. ; The lables following the directive are located in the respective .inc file. ; See data sheet for additional information on configuration word settings.
; ---------- #include <librus\def_ktp.txt> ; файл объявленных имен, бит и констант #include <librus\mac_ktp.txt> ; файл описания макросов ; вместо name project подставляется имя файла соответствующего проекта ; шаблоны имеют name project = proto ;_____ ; ;********************************************************************** ; участок размещения программ общего применения ; может быть также представлен подключаемыми файлами ; ; ;---------- ; #include <librus\irq_ktp.txt> ; файл описания ; вектор аппаратного сброса по RESET ; и участки входа и выхода в/из ; процедур обслуживания вызова прерывания ; вместо name project подставляется имя файла соответствующего проекта ; шаблоны имеют name project = proto ;---------- #include <librus\libr_ktp.txt> ; файл описания секции типовых ; библиотек-утилит общего применения прикладного программного обеспечения МК ; вместо name project подставляется имя файла соответствующего проекта ; шаблоны имеют name project = proto ; ;---------- ; #include <librus\kasdis_c.txt> ; файл обработчика обслуживания дисплея #include <librus\tabls_ktp.txt> ; файл знакогенератора для kasdis_c #include <librus\termo_ktp.txt> ; файл математики bin->dec и обработчика данных от DS18B20 #include <librus\tmm_ktp.txt> ; файл обработчика таймеров ;---------- #include <librus\hd_ktp.txt> ; файл описания секции начальной инициализации и/или ; конфигурации внутренней периферии МК ; вместо name project подставляется имя файла соответствующего проекта ; шаблоны имеют name project = proto ;---------- #include <librus\sfi_ktp.txt> ; файл описания секции начальной инициализации и/или ; конфигурации прикладного программного обеспечения МК ; вместо name project подставляется имя файла соответствующего проекта ; шаблоны имеют name project = proto ; ;---------- #include <librus\ee_ktp.txt> ; файл описания карты размещения ; данных в EEPROM МК ; вместо name project подставляется имя файла соответствующего проекта ; шаблоны имеют name project = proto ;---------- END ; directive 'end of program' ежли удалить комментарии то останется всего-то:
Код:
; Filename: ktp.asm * list p=16F628A ; list directive to define processor #include <p16F628A.inc> ; processor specific variable definitions errorlevel -302 ; suppress message 302 from list file __CONFIG _CP_OFF & DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT #include <librus\def_ktp.txt> ; файл объявленных имен, бит и констант #include <librus\mac_ktp.txt> ; файл описания макросов #include <librus\irq_ktp.txt> ; файл описания вектор аппаратного сброса по RESET ; и участки входа и выхода в/из процедур обслуживания вызова прерывания #include <librus\libr_ktp.txt> ; файл описания секции типовых ; библиотек-утилит общего применения прикладного программного обеспечения МК #include <librus\kasdis_c.txt> ; файл обработчика обслуживания дисплея #include <librus\tabls_ktp.txt> ; файл знакогенератора для kasdis_c #include <librus\termo_ktp.txt> ; файл математики bin->dec и обработчика данных от DS18B20 #include <librus\tmm_ktp.txt> ; файл обработчика таймеров #include <librus\hd_ktp.txt> ; файл описания секции начальной инициализации и/или ; конфигурации внутренней периферии МК #include <librus\sfi_ktp.txt> ; файл описания секции начальной инициализации и/или ; конфигурации прикладного программного обеспечения МК #include <librus\ee_ktp.txt> ; файл описания карты размещения данных в EEPROM МК END ; directive 'end of program'
Если код примитивен и сводится к ногодрыгу, то менять ничего не требуется ни в Си, ни в АСМе. А если используются специфические особенности конкретного МК, то прямой перенос не прокатит ни в Си, ни в АСМе. Использовать готовые куски кода так же можно в любом варианте.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения