Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить

Re: PIC16F84A

Пн фев 19, 2018 15:07:59

Примерно так это можно воплотить:
Спойлер
Код:
;
;
             #DEFINE      FLAG_DIG     REG.FL,0
;
             #DEFINE      SB0          PORTA,0
             #DEFINE      SB1          PORTA,1



;
;
INV          MACRO        REG,BIT1
             MOVLW        1<<BIT1
             XORWF        REG,F
             ENDM

             CBLOCK       0x20      ;BANK0
REG.FL
REG_A,REG_B
REG_IND

             ENDC
;
             CBLOCK       0x70      ;ALL BANK
REG.AL
REZ.L,REZ.H
Q.REG.L
             ENDC
;
             ORG          0x00
INIT
;
;
;
;
MAIN
             BTFSC        SB2
             GOTO         M1.1
                                    ;
             MOVF         PORTA,W
             ANDLW        03H
             MOVWF        REG_A
                                    ;
M1.1         BTFSC        SB3
             GOTO         M1.2
                                    ;
             MOVF         PORTA,W
             ANDLW        03H
             MOVWF        REG_B
;
M1.2
             BTFSC        SB4
             GOTO         M2.0
                                    ; REG_A - REG_B
             MOVF         REG_B,W
             SUBWF        REG_A,W
             BCF          LED_RED
             BTFSS        STATUS,C
             BSF          LED_RED
             BTFSS        STATUS,C
             SUBLW        .0
                                    ;
             MOVWF        REG_IND
;
M2.0
             MOVF         REG_IND,W
             MOVWF        REG.AL
             CALL         BIN2BCD8
;
             INV          FLAG_DIG
             BTFSC        FLAG_DIG
             GOTO         M2.1
;
             MOVF         REZ.L,W
             ANDLW        0FH

             BCF          P.DIG1
             CALL         SET.SEG
             MOVWF        PORTB
             BSF          P.DIG0
             GOTO         M2.0.OUT
;
M2.1
             SWAPF        REZ.L,W
             ANDLW        0FH
;
             BCF          P.DIG0
             CALL         SET.SEG
             MOVWF        PORTB
             BSF          P.DIG1
             ;GOTO         M2.0.OUT
;
;
M2.0.OUT
;
;
;
             GOTO         MAIN
;
;
;
SET.SEG
             ANDWF        PCL,F
;
             RETLW        SEG_0
             RETLW        SEG_1
             RETLW        SEG_2
             RETLW        SEG_3
             RETLW        SEG_4
             RETLW        SEG_5
             RETLW        SEG_6
             RETLW        SEG_7
             RETLW        SEG_8
             RETLW        SEG_9
;
;
;
BIN2BCD8
 ;in: REG.AL - BIN
;out: REZ.H, REZ.L - BCD (PACKED)
  ;
             MOVLW        .8        ; Q.BIT IN
             MOVWF        Q.REG.L
;
             CLRF         REZ.H
             CLRF         REZ.L
             GOTO         B2B1
;
ADJDEC       MOVLW        .51
             ADDWF        REZ.H,F
             ADDWF        REZ.L,F
;
             MOVLW        .3
             BTFSS        REZ.H,3
             SUBWF        REZ.H,F
             BTFSS        REZ.L,3
             SUBWF        REZ.L,F
;
             MOVLW        .48
             BTFSS        REZ.H,7
             SUBWF        REZ.H,F
             BTFSS        REZ.L,7
             SUBWF        REZ.L,F
;
B2B1         RLF          REG.AL,F
             RLF          REZ.L,F
             RLF          REZ.H,F
             DECFSZ       Q.REG.L,F
             GOTO         ADJDEC
             RETURN
;
;
             END


Но там ещё надо ножки определить, в зависимости от схемы подключения и прописать инициализацию....

Спасибо

Re: PIC16F84A

Вт фев 20, 2018 06:43:19

Еще здесь помогают: http://www.cyberforum.ru/microcontrolle ... 92445.html

Разработка программ для микроконтроллера PIC16F84A.

Ср фев 21, 2018 14:42:29

Разработка программ для микроконтроллера PIC16F84A.

Помогите пожалуйста написать программу для микроконтроллера PIC16F84A
На основе микроконтроллера разработать устройство, выполняющее следующие функции:
Последовательного сложения чисел. Вводимые числа (каждое число находиться в интервале от
«0» до «7») задавать кнопками с фиксированным нажатием SB0, SB1, SB2. Факт ввода
инициализировать нажатием кнопки SB3. Полученную сумму графически отображать (с помощью
7-и сегментного дисплея или LCD-матрицы).
:idea: :idea: :idea:

Re: Сделайте за меня задание.

Ср фев 21, 2018 14:53:17

Напишите мне в личку. Могу написать такую.

PIC16F84A

Пт фев 23, 2018 10:05:48

Можете скинуть пример для сложения двух 2разрядных чисел? Желательно с комментариями Заранее спасибо

Re: PIC16F84A

Пт фев 23, 2018 10:51:41

?????????????

Re: PIC16F84A

Пт фев 23, 2018 11:31:07

?????????????

Если ты не заметил я не просил скинуть простое сложение. Я просил немного другое. Двухразрядных чисел .Разница все же есть

Re: PIC16F84A

Пт фев 23, 2018 11:35:39

А разве там ни слова про многобайтных чисел???

Re: PIC16F84A

Пт фев 23, 2018 12:09:59

Можете скинуть ...

Не вопрос, конечно. Пиши в личку.

Re: Сделайте за меня задание.

Пт фев 23, 2018 13:34:28

AN526 PIC16C5x/PIC16Cxx Utility Math Routines - там есть:
This application note provides some utility math routines for Microchip’s PIC16C5X and PIC16CXXX series of 8-bit microcontrollers. The following math outlines are provided: • 8x8 unsigned multiply • 16x16 double precision multiply • Fixed Point Division (Table 3) • 16x16 double precision addition • 16x16 double precision subtraction • BCD (Binary Coded Decimal) to binary conversion routines • Binary to BCD conversion routines • BCD addition • BCD subtraction • Square root These are written in native assembly language and the listing files are provided. They are also available on a disk (MS-DOS ). All the routines provided can be called as subroutines. Most of the routines have two different versions: one optimized for speed and the other optimized for code size. The calling sequence of each routine is explained at the beginning of each listing file.

PIC16F84A

Вт фев 27, 2018 16:44:37

Подскажите что будет легче сделать для начинающего?
1)На основе микроконтроллера разработать устройство, выполняющее следующие функции:
Сложения двух 2-х разрядных двоичных числа. Каждое число вводить через порт путем нажатия
кнопок с фиксацией - SB0, SB1. Факт ввода первого числа инициируется при нажатии кнопки SB2,
а второго SB3. Полученный результат при нажатии кнопки SB4 выводиться на 7-сегментный
дисплей
ИЛИ
2)На основе микроконтроллера разработать устройство, выполняющее следующие функции:
Сравнения 2-х двухразрядных двоичных чисел, поступающих на микроконтроллер. Процедура
сравнения активизируется нажатием на кнопку SB1. Если поступающие числа равны –
активизируется светодиод VD1, если первое число больше второго – мигает светодиод VD2, если
второе больше первого – мигает светодиод VD3. Числа задавать с помощью кнопок с
фиксированным нажатием – первое число S10, S11; второе число – S20, S21.

PIC16F84A

Вт фев 27, 2018 16:52:49

Как вывести числа от 0 до 9 в семисегментном индикаторе?

Re: PIC16F84A

Вт фев 27, 2018 17:47:23

Можно динамически или статически. В любом случае нужно написать программу и спаять схему.

Re: PIC16F84A

Вт фев 27, 2018 17:48:57

Оба варианта простые (сложные).

Re: PIC16F84A

Вт фев 27, 2018 18:23:37

Как вывести числа от 0 до 9 в семисегментном индикаторе?


Ежли на асме, то как-то так:
Спойлер
Код:
   list p=PIC16C84, r=dec, st=OFF  ;Enter device name
#include <p16f84.inc>
;
        __CONFIG _XT_OSC & _CP_OFF & _WDT_OFF & _PWRTE_OFF

// port b
#define seg_a  (1<<7)
#define seg_b  (1<<6)
#define seg_c  (1<<5)
#define seg_d  (1<<4)
#define seg_e  (1<<3)
#define seg_f  (1<<2)
#define seg_g  (1<<1)

#define let_1 seg_b | seg_c
#define let_2 seg_a | seg_b | seg_d | seg_e | seg_g
#define let_3 seg_a | seg_b | seg_c | seg_d | seg_g
#define let_4 seg_b | seg_c | seg_f | seg_g
#define let_5 seg_a | seg_c | seg_d | seg_f | seg_g
#define let_6 seg_c | seg_d | seg_e | seg_f | seg_g
#define let_7 seg_a | seg_b | seg_c
#define let_8 seg_a | seg_b | seg_c | seg_d | seg_e | seg_f | seg_g
#define let_9 seg_a | seg_b | seg_c | seg_f | seg_g
#define let_0 seg_a | seg_b | seg_c | seg_d | seg_e | seg_f

 bsf   status, rp0
 movlw 0x0f
 movwf trisa
 clrf trisb
 bcf   status, rp0
loop:
 movf porta, w
  call segm_tab
 movwf portb
 goto loop

segm_tab:
 andlw 0x0f
 addwf pcl
 retlw let_0
 retlw let_1
 retlw let_2
 retlw let_3
 retlw let_4
 retlw let_5
 retlw let_6
 retlw let_7
 retlw let_8
 retlw let_9
 retlw 0
 retlw 0
 retlw 0
 retlw 0
 retlw 0
 retlw 0

  end
не проверял, и написано предполагая, что это уместится в первые 256 байт памяти. Читает 4 младших разряда порта А и выводит в порт Б семисегментный код, предполагая, что индикатор с общим катодом.

Re: Сделайте за меня задание.

Вт мар 27, 2018 21:03:06

Всем привет! Решил потренироваться в составлении аналитических уравнений по переходным процессам в электрических цепях и застрял на очень простой схеме:
Изображение

Мои рассуждения:
Пусть входное напряжение будет постоянным, обычная ступенька. Так принято чтобы было легче оценить результаты расчетов. В идеале хотелось бы для произвольного U.
Понятно, что индуктивность со временем шунтирует сопротивление и ток через нее должен уйти в бесконечность, как на рисунке.
Понятно, что при подаче ступеньки индуктивность является фактически разрывом в цепи и ток цепи будет Ir=U/R, а потом должен уменьшаться, так как "появится" параллельная ветвь, как на рисунке.
Когда пытаюсь составить аналитические уравнения токов Ir, Il ничего не выходит. Для последовательной не сложно, там все понятно, а вот в параллельной... Не раскладывать же напряжение в ряд фурье, чтобы взять реактивное сопротивление для каждой частоты 1/wL, а потом суммировать итоговый ток по элементам ряда ?! Должен быть способ получить более удобное выражение в виде дифф.ура.

Читал тут:
http://electroandi.ru/toe/posledovatelnaya-rl-tsep.html
Этот пример можно встретить везде (так что ссылка в принципе не сильно важна), видимо он типовой и цепь последовательная.
Пробовал рассчитать методом контурных токов (потому что в методе контурных токов используется как раз падение напряжение на сопротивлении, 2 закон кирхгофа по сути, а значит можно воспользоваться примером из ссылки выше). Получается какой то бред... Что Il=Интеграл от (U/L)dt. Но при постоянном U это получается линейно возрастающая функция! А переходные процессы всегда описываются экспонентами! Более того, получается что ток Ir через какое то время станет отрицательным.

Нашел более менее похожий пример:
http://toe.osu.ru/wp-content/uploads/20 ... t_2013.pdf
страница 27. Приведен пример в котором есть параллельный контур, но непонятно почему в системе уравнений внизу страницы правые части равны нулям, хотя должны быть ЭДС, то есть U.

В общем подскажите как составить дифур или систему дифуров из которой можно получить выражения для Ir и Il

Заранее спасибо

Re: Сделайте за меня задание.

Ср мар 28, 2018 05:10:02

При отсутствии последовательного с индуктивностью сопротивления, если её подключить к источнику напряжения, то ток через неё действительно будет возрастать линейно со скоростью, равной U/L, вплоть до бесконечного (а чем он ограничен?). Ток через резистор на самом деле не меняется, он равен U/R. А с чего бы ему меняться? Ток через индуктивность к нему никакого отношения не имеет. (Напоминаю, что по законам ТОЭ ток источника напряжения может быть какой угодно, ибо внутреннее сопротивление оного строго нулевое.)
Переходные процессы не всегда описываются экспонентами. Этот пример доказывает. А если окажется последовательное сопротивление (это может быть сопротивление катушки и/или внутреннее сопротивление источника), то тут и экспонента появится.

Re: Сделайте за меня задание.

Ср мар 28, 2018 13:44:26

Ток через резистор на самом деле не меняется, он равен U/R. А с чего бы ему меняться?

Простите, но я могу привести контрпример. После окончания переходного процесса при постоянном напряжении индуктивность в правой ветви фактически пропадает, так как ее активное сопротивление равно нулю. Значит, схема должна стремиться к виду:
http://radiokot.ru:5050/elecir/export.h ... MoveY=-216
В такой схеме по вашим словам через сопротивление R должен течь ток U/R, как будто сопротивление включено не параллельно с шунтом, а в разрыв!

Это не соответствует наблюдаемым в жизни явлениям: птица, севшая на провод ЛЭП, не получает удара током, по ней не течет току U/Rптицы (как вы сказали), именно потому, что сопротивление провода (параллельной ветви) близко к нулю.

По законам электротехники, насколько я их понимаю, ток через резистор должен выглядеть примерно так (L-эквивалентное сопротивление индуктивности, я не знаю как его правильно записать, по сути в этом и вся проблема):
Ir=Iобщ*L/(R+L)
По аналогии с параллельным соединением сопротивлений:
I1=Iобщ*R2/(R1+R2) ; I2=Iобщ*R1/(R1+R2)

Или я что то не правильно понимаю? Надеюсь понятно написал :oops:

Re: Сделайте за меня задание.

Ср мар 28, 2018 14:03:16

это в реале - где всегда есть R внутреннее источника, а у вас теория и только напряжение - оно и будет первично, как включенные в розетку лампа и холодильник - при хорошей проводке лампа не мигает когда запускается холодильник, а при плохой мигает.по вашей схеме проводка идеальная и резистор потребляет из неё U/R, а катушка t*U/L в итоге от источника потребляется их сумма (пока идеальный источник не перестанет быть идеальным :)) )

Re: Сделайте за меня задание.

Чт мар 29, 2018 07:06:01

Значит, схема должна стремиться к виду:
http://radiokot.ru:5050/elecir/export.h ... MoveY=-216
Не открывает. Положите туда, где нормально откроется, тогда продолжим разговор. Если, конечно, будет у меня возможность (может не быть, такие дела...).
Ответить