Автор работы: Пользователь скрыл имя, 01 Ноября 2012 в 20:12, дипломная работа
Освещение играет немаловажную роль как на производстве, так и в быту. От него зависит как сохранность здоровья персонала, так и непосредственно продуктивность его труда. Неправильное освещение может привести к серьезному ухудшению зрения, повышению утомляемости и, как следствие, снижение эффективности любой деятельности. В помещениях, где выполняются любые виды работ, и прилегающих территориях необходимо во-первых соблюдать определенные правила организации, и во-вторых — следить за уровнем освещенности, а так же уровнем пульсации светового потока от различных источников. Коэффициент пульсации освещенности (Кп) является характеристикой относительной глубины колебаний освещенности в результате изменения во времени светового потока источников света. Контроль уровня пульсации — очень важная организационная мера, т. к. несоблюдение требований по уровню коэффициента пульсации приводит к повышенной утомляемости, ухудшению зрения, и, как следствие, к ухудшению производственных показателей.
minl0 btfsc EminL, 0
call adctomin
goto metka2
metka2 bcf STATUS, 5
bcf STATUS, 6
movf EmaxH, W ;сравнить новое значение с предыдущим максимумом
xorwf ADRESH, 0 ;с помощью операции побитового исключающего ИЛИ
movwf X1
btfsc X1, 1
goto maxh1
btfsc X1, 0
goto maxh0
movf EmaxL, W
bsf STATUS, 5
xorwf ADRESL, 0
bcf STATUS, 5
movwf X2
btfsc X2, 7
goto maxl7
btfsc X2, 6
goto maxl6
btfsc X2, 5
goto maxl5
btfsc X2, 4
goto maxl4
btfsc X2, 3
goto maxl3
btfsc X2, 2
goto maxl2
btfsc X2, 1
goto maxl1
btfsc X2, 0
goto maxl0
maxh1 btfss EmaxH, 1 ;и если новое значение больше, чем
call adctomax ;предыдущий максимум,
goto metka1 ;то переписать значение максимума
maxh0 btfss EmaxH, 0
call adctomax
goto metka1
maxl7 btfss EmaxL, 7
call adctomax
goto metka1
maxl6 btfss EmaxL, 6
call adctomax
goto metka1
maxl5 btfss EmaxL, 5
call adctomax
goto metka1
maxl4 btfss EmaxL, 4
call adctomax
goto metka1
maxl3 btfss EmaxL, 3
call adctomax
goto metka1
maxl2 btfss EmaxL, 2
call adctomax
goto metka1
maxl1 btfss EmaxL, 1
call adctomax
goto metka1
maxl0 btfss EminL, 0
call adctomax
goto metka1
adctomin movf ADRESH, W
movwf EminH
bsf STATUS, 5
movf ADRESL, W
bcf STATUS, 5
movwf EminL
goto metka1
adctomax movf ADRESH, W
movwf EmaxH
bsf STATUS, 5
movf ADRESL, W
bcf STATUS, 5
movwf EmaxL
goto metka1
;представить значение
;в десятичном виде
;и записать количество единиц,
;десятков, сотен и тысяч в X1, X2, X3 и X4 соответственно
bintodec movlw 0x00
movwf X1
movwf X2
movwf X3
movwf X4
movlw 5
btfsc EminH, 1
addwf X3
movlw 1
btfsc EminH, 1
addwf X2
movlw 2
btfsc EminH, 1
addwf X1
movlw 2
btfsc EminH, 0
addwf X3
movlw 5
btfsc EminH, 0
addwf X2
movlw 6
btfsc EminH, 0
addwf X1
movlw 1
btfsc EminL, 7
addwf X3
movlw 2
btfsc EminL, 7
addwf X2
movlw 8
btfsc EminL, 7
addwf X1
btfsc X1, 4
call incX2
btfss X1, 3
goto zn7
btfsc X1, 2
call incX2
btfss X1, 3
goto zn7
btfsc X1, 1
call incX2
zn7 movlw 6
btfsc EminL, 6
addwf X2
movlw 4
btfsc EminL, 6
addwf X1
btfsc X1, 4
call incX2
btfss X1, 3
goto pzn6
btfsc X1, 2
call incX2
btfss X1, 3
goto pzn6
btfsc X1, 1
call incX2
pzn6 btfsc X2, 4
call incX3
btfss X2, 3
goto zn6
btfsc X2, 2
call incX3
btfss X2, 3
goto zn6
btfsc X2, 1
call incX3
zn6 movlw 3
btfsc EminL, 5
addwf X2
movlw 2
btfsc EminL, 5
addwf X1
btfsc X1, 4
call incX2
btfss X1, 3
goto pzn5
btfsc X1, 2
call incX2
btfss X1, 3
goto pzn5
btfsc X1, 1
call incX2
pzn5 btfsc X2, 4
call incX3
btfss X2, 3
goto zn5
btfsc X2, 2
call incX3
btfss X2, 3
goto zn5
btfsc X2, 1
call incX3
zn5 movlw 1
btfsc EminL, 4
addwf X2
movlw 6
btfsc EminL, 4
addwf X1
btfsc X1, 4
call incX2
btfss X1, 3
goto ppzn4
btfsc X1, 2
call incX2
btfss X1, 3
goto ppzn4
btfsc X1, 1
call incX2
ppzn4 btfsc X2, 4
call incX3
btfss X2, 3
goto pzn4
btfsc X2, 2
call incX3
btfss X2, 3
goto pzn4
btfsc X2, 1
call incX3
pzn4 btfsc X3, 4
call incX4
btfss X3, 3
goto zn4
btfsc X3, 2
call incX4
btfss X3, 3
goto zn4
btfsc X3, 1
call incX4
zn4 movlw 8
btfsc EminL, 3
addwf X1
btfsc X1, 4
call incX2
btfss X1, 3
goto ppzn3
btfsc X1, 2
call incX2
btfss X1, 3
goto ppzn3
btfsc X1, 1
call incX2
ppzn3 btfsc X2, 4
call incX3
btfss X2, 3
goto pzn3
btfsc X2, 2
call incX3
btfss X2, 3
goto pzn3
btfsc X2, 1
call incX3
pzn3 btfsc X3, 4
call incX4
btfss X3, 3
goto zn3
btfsc X3, 2
call incX4
btfss X3, 3
goto zn3
btfsc X3, 1
call incX4
zn3 movlw 4
btfsc EminL, 2
addwf X1
btfsc X1, 4
call incX2
btfss X1, 3
goto ppzn2
btfsc X1, 2
call incX2
btfss X1, 3
goto ppzn2
btfsc X1, 1
call incX2
ppzn2 btfsc X2, 4
call incX3
btfss X2, 3
goto pzn2
btfsc X2, 2
call incX3
btfss X2, 3
goto pzn2
btfsc X2, 1
call incX3
pzn2 btfsc X3, 4
call incX4
btfss X3, 3
goto zn2
btfsc X3, 2
call incX4
btfss X3, 3
goto zn2
btfsc X3, 1
call incX4
zn2 movlw 2
btfsc EminL, 1
addwf X1
btfsc X1, 4
call incX2
btfss X1, 3
goto ppzn1
btfsc X1, 2
call incX2
btfss X1, 3
goto ppzn1
btfsc X1, 1
call incX2
ppzn1 btfsc X2, 4
call incX3
btfss X2, 3
goto pzn1
btfsc X2, 2
call incX3
btfss X2, 3
goto pzn1
btfsc X2, 1
call incX3
pzn1 btfsc X3, 4
call incX4
btfss X3, 3
goto zn1
btfsc X3, 2
call incX4
btfss X3, 3
goto zn1
btfsc X3, 1
call incX4
zn1 movlw 1
btfsc EminL, 0
addwf X1
btfsc X1, 4
call incX2
btfss X1, 3
goto ppzn0
btfsc X1, 2
call incX2
btfss X1, 3
goto ppzn0
btfsc X1, 1
call incX2
ppzn0 btfsc X2, 4
call incX3
btfss X2, 3
goto pzn0
btfsc X2, 2
call incX3
btfss X2, 3
goto pzn0
btfsc X2, 1
call incX3
pzn0 btfsc X3, 4
call incX4
btfss X3, 3
goto zn0
btfsc X3, 2
call incX4
btfss X3, 3
goto zn0
btfsc X3, 1
call incX4
zn0 nop
ASCII movlw 0x30
addwf X1
addwf X2
addwf X3
addwf X4
return
incX2 movlw 1
addwf X2
movlw 10
subwf X1
return
incX3 movlw 1
addwf X3
movlw 10
subwf X2
return
incX4 movlw 1
addwf X4
movlw 10
subwf X3
return
;запись значений в память
tomem movlw 0x2100 ;
call dataread ;в котором хранится адрес последней занятой значением ячейки + 1
bcf STATUS, 5
bsf STATUS, 6
addwf EEADR, 1 ;и записать это значение в EEADR
bcf STATUS, 6
movf osv1, W ;записать значение старшего байта
bsf STATUS, 6 ;среднего значения освещенности
movwf EEDATA ;в EEDATA
call datawrite ;инициировать запись
bsf STATUS, 6
movlw 1 ;увеличить значение EEADR на 1
addwf EEADR, 1 ;и повторить
bcf STATUS, 6
movf osv2, W ;записать значение младшего байта
bsf STATUS, 6 ;среднего значения освещенности
movwf EEDATA ;в EEDATA
call datawrite
bsf STATUS, 6
movlw 1 ;увеличить значение EEADR на 1
addwf EEADR, 1 ;и повторить запись
bcf STATUS, 6
movf kpuls, W ;записать значение коэффициента пульсации
bsf STATUS, 6 ;в EEDATA
movwf EEDATA
call datawrite
bsf STATUS, 6
movlw 1 ;увеличить значение
addwf EEADR, 1 ;EEADR на 1
movlw 0x2100 ;вычесть из этого значения
subwf EEADR, 0 ;2100h
movwf EEDATA
movlw 0x2100 ;и записать
movwf EEADR ;в нулевую ячейку памяти EEPROM
call datawrite
return
;функция вывода информации из памяти на экран
frommem movlw 0 ;прочитать значение нулевой ячейки
movwf ADDR ;памяти EEPROM
movlw 0x2100
call dataread
movwf X1
movf X1, W
addwf ADDR ;добавить его к ADDR
movlw 0x20FD
addwf ADDR
movf shift, W ;так же добавить к ADDR
addwf ADDR ;значение счетчика просмотренных результатов
movf ADDR, W ;ограничение пролистываний измерений
subwf X1, 0 ;вверх
btfss STATUS, 2
goto $+4
movlw 3
subwf ADDR
subwf shift
movlw 0xFE ;и вниз
subwf ADDR, 0
btfss STATUS, 2
goto $+4
movlw 3
addwf ADDR
addwf shift
movf ADDR, W ;прочитать значение по адресу ADDR
call dataread
movwf osv1 ;записать его в старший байт среднего значения освещенности
movlw 1
addwf ADDR ;увеличить значение ADDR
movf ADDR, W ;прочитать значение по новому адресу
call dataread
movwf osv2 ;записать в младший байт среднего значения освещенности
movlw 1
addwf ADDR ;увеличить ADDR
movf ADDR, W ;
call dataread ;прочитать значение по новому адресу
movwf kpuls ;записать значение в переменную, соответствующую коэффициенту пульсации
call output ;вызвать функцию вывода информации на экран
return