Добридень, шановні!
Потрібна програма на асемблера для електронних ваг на PIC16C72 ///
Може хто-небудь допомогти?
початкова задача така:
Проектування електронних ваг на базі мікроконтролера.
Інформація про вагу надходить від датчика тиску в цифровій формі. Пристрій розрахований на вагу: 0 - 9.99 кг.
Введення ціни за кілограм здійснюється з клавіатури. Ціна / кг: 0.01 - 9.99 р.
Необхідно організувати висновок остаточного результату (ціни) на індикатор.
алгоритм складений такий:
Що стосується введення ціни / кг, то передбачається, що кількість рублів буде записуватися в один регістр і виводитися на індикатори 1,2, а кількість копійок буде записуватися в інший регістр і виводитися на індикатори 3,4.
Натискання на кнопку. буде означати, що запис кількості рублів закінчилася.
Введення від датчика тиску проводиться: кілограми в один регістр, грами - в інший.
При цьому на індикатор виводиться і ціна / кг, і вага.
Запис інформації з подальшим виведенням її на індикатор здійснюється після натискання кнопки П.
Коли вся інформація отримана, натискання кнопки П ініціює перемноження вага * ціна / кг. Результат зберігається в двох регістрах. Після чого відбувається виведення остаточної ціни на індикатор (при цьому вага не виводимо).
Одна з основних завдань - організація операції множення вага * ціна / кг.
Її можна представити таким чином:
Запишемо кількість рублів ціни / кг в регістр RG0,
а кількість копійок - в RG1.
Кількість кілограмів ваги - в RG2,
кількість грам - в RG3.
Здійснюємо перемноження наступним чином:
RG2 * RG0 зі збереженням результату в RG4
RG2 * RG1 зі збереженням результату в RG5, RG6
RG0 * RG3 зі збереженням результату в RG7, RG8
RG1 * RG3 з сохрененіем результату в RG9, RG10
Далі виробляємо складання RG4 + RG5 + RG7 зі збереженням результату в RG11 () це кількість рублів
Також підсумовуємо RG6 + RG8 + RG9 - отримаємо кількість копійок, в загальному випадку це число може перевищувати 256, тому буде займати 2 регістра - RG12, RG13. Крім того, кількість копійок може перевищувати 100, тоді потрібно буде збільшити кількість рублів. Можна записати:
Якщо RG12> 200,
то RG12 = RG12 - 200
RG12 = RG12 + RG13
RG11 = RG11 + 2
Якщо RG12> 100,
то RG12 = RG12 - 100
RG11 = RG11 + 1
Після виконання такої процедури необхідно вивести значення RG11 на індикатори 1, 2, а RG12 - на індикатори 3, 4.
добре, проблема в тому, що я не знаю з чого почати, що таке асемблер і як його застосовувати в даному випадку? потрібні команди для даного контролера, де їх можна взяти?
Взяти можна на сайті виробника. там є повністю документація і приклади, але англійською. Хоча в цьому англійському сотню слів знати цілком достатньо.
І цей PIC16C72 штука стара і одноразова. Один раз запрограмував - і все. Якщо є можливість, краще умовити керівника на щось більш сучасне і поширене, на кшталт PIC16F628A (майже те саме, що PIC16F84, який вже розжували далі нікуди), або PIC16F882 (а також 883, 884.). Або PIC16F876A, теж досить поширений. Або вже відразу почати з PIC24F - взагалі краса, ніяких банків, сторінок. Тільки у нього як би функцій побільше, вивчати доведеться більше, але програмувати легше. вибирай
p.s. Тільки я про асемблер, якщо на С - тоді воно в принципі по барабану.