Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ответ: +

Отправлено dshabrov 27 ноября 2008 г. 15:37
В ответ на: А теперь повтори еще раз в тегах [pre] и [/pre] отправлено MBedder 27 ноября 2008 г. 15:30

#include <at89c51xd2.h>
cs equ P2.3 ;линия выбоpа микpосхемы = CS, 10
mosi equ P2.2 ;линии = Din, 11 ;p2.4 - макет ;p2.2
miso equ P2.1 ;поpта = Dout,12 ;p2.5 - макет ;p2.1
sck equ P2.0 ;SPI = CLK, 13 ;p2.2 - макет ;p2.0

;Сохраняемые ячейки
pus equ 20h.0 ;бит новичок / эксперт
serv equ 20h.1 ;бит режима настроек
Left equ 20h.2 ;бит признака вращения энкодера влево
Right equ 20h.3 ;бит признака вращения энкодера вправо
Dzdec equ 20h.4 ;бит запрета анализа сигнала от энкодера
Strob equ 20h.5 ;строб вывода информации на ЖКИ
Strob1s equ 20h.6 ;секундный строб
Knobf equ 20h.7 ;бит признака нажатия кнопки
Knobl equ 21h.0 ;бит признака долгого нажатия кнопки
Moving equ 21h.1 ;бит признака движения
PIC equ 21h.2 ;отслеживание в канале поворотника изменения уровня
Status equ 22h ;ячейка статуса программы
ComState equ 23h ;статус обработчика COM порта

Beep equ 24h ;таймер звукового сигнала
ddd equ 25h ;таймер 150мс
t1s equ 26h ;таймер 1с
KnobCnt equ 27h ;счетчик времени нажатия кнопки
Lite equ 28h ;память яркости подсветки

;Время в пути. Обрабатывается с секундным интервалом от таймера 2. Общее время
;считается в ячейках CHAS:MINUT:SECUND. Время в движении считается в ячейках
;CHASM:MINUTM:SECUNDM если бит Moving установлен. Время в стоянке считается в
;ячейках CHASS:MINUTS:SECUNDS если бит Moving сброшен.
chas equ 29h ;счетчик
minut equ 2ah ;времени
secund equ 2bh ;поездки
chass equ 2ch ;счетчик
minuts equ 2dh ;времени
secunds equ 2eh ;простоя
chasm equ 2fh ;счетчик
minutm equ 30h ;времени
secundm equ 31h ;в пути

;Подсчет расхода. Расход в секунду. Счетчик MLSECC увеличивается в прерывании
;по расходу. Раз в секунду (прерывание от таймера 2) значение MLSECC переписы-
;вается в MLSECM и MLSECC обнуляется. Значение в мл. Расход по расстоянию.
;Счетчик MLDISTC увеличивается в прерывании по расходу. В прерывании от датчика
;скорости обрабатывается счетчик дистанции RASHDST. По обнулению счетчика
;дистанции значение MLDISTC переписывается в MLDISTM. MLDISTC обнуляется и
;счетчик RASHDST инициализируется вновь.
R16D equ 32h ;счетчик делитель импульсов расхода
mlsecc equ 33h ;расход в секунду. Счетчик
mlsecm equ 34h ;расход в секунду. Память
mldistc equ 35h ;расход по дистанции. Счетчик
mldistm equ 36h ;расход по дистанции. Память
rashdst equ 37h ;дистанция для подсчета расхода
rashodl equ 38h ;общий расход в мл. Младший байт
rashodh equ 39h ;общий расход в мл. Старший байт

;Напряжение бортсети. Измеряется вначале основного процесса. К измеренному
;значению прибавляется корректирующее значение UCORR Запоминаются текущее
;значение и вычесленный максимум и минимум.
Utek equ 3ah ;текущее значение напряжения бортсети
Umin equ 3bh ;минимальное значение напряжения бортсети
Umax equ 3ch ;максимальное значение напряжения бортсети
Ucorr equ 3dh ;коррекция измеренного напряжения БС

;Рассояние и скорость. Пройденное рассояние считается в метрах трехбайтовым
;счетчиком DIST3:2:1. Для подсчета скорости число импульсов в секунду
;накапливается в SPSECH:SPSECL. Раз в секунду (прерывание от таймера 2) результат
;переписывается SPSECH:SPSECL -> SPEEDH:SPEEDL. Ячейки SPSECH:SPSECL обнуляются.
;Раз в секунду (прерывание от таймера 2) значение SPEEDH:SPEEDL проверяется на
;максимум и максимальное значение запоминается в SPMAXL:SPMAXH. Все значени
;скорости в импульсах для повышения точности расчета.
V6S equ 3eh ;счетчик делитель импульсов расстояния
dist1 equ 3fh ;пройденное рассотяние. Младший байт
dist2 equ 40h ;пройденное рассотяние. Средний байт
dist3 equ 41h ;пройденное рассотяние. Старший байт
spsecl equ 42h ;счкетчик пройденых импульсов младший байт
spsech equ 43h ;счкетчик пройденых импульсов старший байт
speedl equ 44h ;ячейка подсчета скорости старший байт
speedh equ 45h ;ячейка подсчета скорости старший байт
spmaxl equ 46h ;ячейка подсчета максимальной скорости младший байт
spmaxh equ 47h ;ячейка подсчета максимальной скорости старший байт

;Передача и прием по COM порту.
CntRx equ 48h ;адрес буфера приема XRAM
WaitCom equ 49h ;таймер ожадания

bufish equ 4ah ;буфеp шестнадцатиpичных отобpажаемых данных
mem equ bufish+4 ;+4 пpи четыpех шестнадцатиpичных pазpядов
bufout equ mem+1 ;выходной буфер преобразвания

CSEG AT 0000

jmp m0 ;обход адpесов прерываний (int0,03H,p3.2)

org 3 ;внешнее прерывание 0 (int0 3H,p3.2)
jmp Ex_int0 ;Расстояние.

org 0bh ;адpес пpеpывания по таймеpу 0
jmp tr0_int ;точка входа в прерывание по таймеру 0(0bh)

org 13h ;внешнее прерывание 1 (int1,13H,p3.3)
jmp Ex_int1 ;Расход.

org 23h ;прерывание по приему и передаче
jbc RI,ComRx ;прерывание по приему - переход
jmp ComRx1 ;прерывание по передаче - переход
ComRx: push 0 ;прием: сохранить
push acc ;изменяемые регистры
mov r0,CntRx ;загрузить счетчик адреса для косвенной адресации
mov a,SBUF ;принятый байт
movx @r0,a ;записать в XRAM принятый байт
inc CntRx ;следующий адрес буфера приема в XRAM
pop acc ;восстановить
pop 0 ;изменяемые регистры
ComRx1: reti ;


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 3 на единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru