Проектирование микропроцессорной системы управления электронным замком
Автоматизация процесса защиты противопожарного инвентаря и средств пожаротушения. Проект микропроцессорной системы управления электронным замком: разработка концепции и структуры АС. Программное обеспечение микроконтроллера, листинг программы и прошивки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 28.05.2012 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
RDMORE:MOV A,#0FFH;prepare to read a byte
LCALL TBYTE;read byte
MOV @R0,A;save byte
INC R0;next address
DJNZ R1,RDMORE;repeat until finished
MOV A,R4;get CRC value in ACC
JZ CRC_OK;jump if successful
CLR C;indicate failure
SJMP RET90
CRC_OK:LCALL CHKZ;check code for zero
JNC RET90;invalid code
DIS90:MOV TMATM,#TMATMV
RET90:RET;return to caller
;Check TM code for zero:
CHKZ:MOV R0,#ROMD;init pointer
MOV R1,#8;init counter
NEXTZ:MOV A,@R0
ADD A,#0FFH;C = 1 if A>0
JC OKZ
INC R0;next address
DJNZ R1,NEXTZ
OKZ:RET
; I2C NVM memory 24C02 support:
;
; I2C - bus supported subroutines:
;
; I2C_WR - Write byte from A via I2C bus
; I2C_RD - Read byte to A via I2C bus
; I2C_LRD - Read last byte to A via I2C bus (no ASK)
; I2C_SUB - Send subaddress from R1 to I2C device
; I2C_SUBR - Send subaddress from R1 and perform read.
; I2C_STOP - Stop condition generation on I2C bus
;
; I2C slave address I2C_ADDR (0A0H for 24C02 A0,A1,A2=0)
; I2C data line SDA
; I2C clock line SCL
;Send subaddress to I2C device.
;Input: R1 - subaddress.
I2C_SUB: MOV A,#I2C_ADDR;I2C device address, write mode
LCALL I2C_WR;send device address
MOV A,R1;subaddress
LCALL I2C_WR;send subaddress
RET
;Send subaddress and perform read.
;Input: R1 - subaddress.
I2C_SUBR:LCALL I2C_SUB;send subaddress
LCALL I2C_STOP;stop
MOV A,#I2C_ADDR+1;I2C device address, read mode
LCALL I2C_WR;send device address
RET
;Send byte from A via I2C bus.
I2C_WR: PUSH B
MOV B,#9H;bit counter load
SETB C;set C, for bit 9 = 1 (when ACK)
LCALL SDA0;SDA 1 -> 0 - start
I2CWR1:LCALL SCL0;SCL 1 -> 0
RLC A
JC OUTP1;jump if bit = 1
LCALL SDA0;else SDA=0
SJMP OUTP0
OUTP1:LCALL SDA1;SDA=1, if bit = 1
OUTP0:LCALL SCL1;SCL 0 -> 1
DJNZ B,I2CWR1;loop
POP B
RET
;Read byte via I2C to A.
I2C_RD:MOV A,#1H;A init to receive 8 bit
I2CRD1:LCALL SCL0;SCL 1 -> 0
LCALL SDA1;SDA=1 - SDA line release
LCALL SCL1;SCL 0 -> 1
MOV C,SDA;move bit from SDA line to C
RLC A;shift bit C into A
JNC I2CRD1;loop until C = 1
LCALL SCL0;SCL 1 -> 0
LCALL SDA0;SDA=0 - ACK generation
LCALL SCL1;SCL 0 -> 1
RET
;Read byte via I2C to A without ASK
;(receive last byte).
I2C_LRD:MOV A,#1H;A init to receive 8 bit
I2CLRD1:LCALL SCL0;SCL 1 -> 0
LCALL SDA1;SDA=1 - SDA line release
LCALL SCL1;SCL 0 -> 1
MOV C,SDA;move bit from SDA line to C
RLC A;shift bit C into A
JNC I2CLRD1;loop until C = 1
LCALL SCL0;SCL 1 -> 0
LCALL SCL1;SCL 0 -> 1 when SDA=1: no ACK
RET
;STOP condition generation:
I2C_STOP:LCALL SCL0
LCALL SDA0
LCALL SCL1
LCALL SDA1
RET
;SDA and SCL lines control:
SDA0:CLR SDA;SDA 1/0
RET
SDA1:SETB SDA;SDA 0/1
RET
SCL0:CLR SCL;SCL 1/0
RET
SCL1:SETB SCL;SCL 0/1
RET
;EEPROM address map:
;00H - page not used
;08H - touch memory code 1
;10H - touch memory code 2
;...
;Save new key:
;NUM - key number (1..9)
SAVE: MOV A,NUM
MOV B,#8
MUL AB;NUM x 8
MOV R1,A;R1 <- subaddress
LCALL I2C_SUB;send subaddress
MOV R1,#8;init counter
MOV R0,#ROMD;init pointer
DOWR:MOV A,@R0
LCALL I2C_WR;send data
INC R0
DJNZ R1,DOWR
LCALL I2C_STOP;stop
LCALL DEL15;delay 15mS to page write
RET
;Check for member:
;Returns C=1 if code O.K.
CHKMEM:MOV R2,#1;init key counter
NEXT:MOV A,R2
MOV B,#8
MUL AB;NUM x 8
MOV R1,A;R1 <- subaddress
LCALL I2C_SUBR;send subaddress and read mode
MOV R1,#8;init counter
MOV R0,#ROMD;init pointer
DORD:LCALL I2C_RD;read data
XRL A,@R0
JNZ INVAL;jump if invalid code
INC R0;next address
DJNZ R1,DORD
LCALL I2C_LRD;stop read
LCALL I2C_STOP
SETB C;valid code, C <- 1
RET
INVAL: LCALL I2C_LRD;stop read
LCALL I2C_STOP
INC R2;next key
MOV A,R2
CJNE A,#MAXK+1,NEXT
CLR C;invalid code, C <- 0
RET
;Check for master:
CHKMAS: MOV R1,#8;init counter
MOV DPTR,#MK;init pointer to ROM
MOV R0,#ROMD+7;init pointer to RAM
DOCM:CLR A
MOVC A,@A+DPTR;read ROM
XRL A,@R0;ROM[DPTR] = RAM[R0] ?
JNZ INVM;jump if invalid code
INC DPTR;next ROM address
DEC R0;next RAM address
DJNZ R1,DOCM
SETB C;valid master code, C <- 1
RET
INVM:CLR C;invalid master code, C <- 0
RET
;Display support:
;Input: NUM = value
;if PROG = 0 display is blanked
;if PROG = 1 and BLINK = 1 display is blinking
DISP: MOV A,#BLANK;blank display if PROG = 0
JNB PROG,IND
MOV A,#CH_P;display "P" if SNUM = 0
JNB SNUM,IND
MOV A,NUM;display NUM if PROG = 1 and SNUM = 1
IND:MOV C,T320M;load blink period bit
ORL C,/BLINK;check blink enable bit
JC IND1
MOV A,#BLANK
IND1:MOV DPTR,#FONT;font table pointer
MOVC A,@A+DPTR;read font
MOV DDATA,A;indicator control
RET
;Delay 15mS:
DEL15:PUSH B
PUSH ACC
MOV B,#30
DEL05:MOV A,#CLK_KHZ/48
DJNZ ACC,$
LCALL WAKEUP;watchdog wakeup
DJNZ B,DEL05
POP ACC
POP B
RET
; ------ Interrupt Holders ------
; TIMER 0 Interrupt
; System clock (20mS)
RTC: PUSH ACC
CLR TR0 ;timer 0 stop
MOV TH0,#HI(RTCV) ;timer 0 load for 20mS
MOV TL0,#LO(RTCV)
SETB TR0 ;timer start
INC RTPC ;advance Real Time Program Counter
; 20mS program counters
RTC1:MOV A,TMATM
JZ RTC2
DEC TMATM
RTC2:MOV A,AENTM
JZ RTC3
DEC AENTM
RTC3:MOV A,OPNTM
JZ RTC4
DEC OPNTM
RTC4:MOV A,RETTM
JZ RTC5
DEC RETTM
RTC5:POP ACC
RETI
; FGABSCDE
FONT.DB 01001000B;code 00H, character 0
.DB 11101011B;code 01H, character 1
.DB 10001100B;code 02H, character 2
.DB 10001001B;code 03H, character 3
.DB 00101011B;code 04H, character 4
.DB 00011001B;code 05H, character 5
.DB 00011000B;code 06H, character 6
.DB 11001011B;code 07H, character 7
.DB 00001000B;code 08H, character 8
.DB 00001001B;code 09H, character 9
.DB 00001010B;code 0AH, character A
.DB 00111000B;code 0BH, character B
.DB 01011100B;code 0CH, character C
.DB 10101000B;code 0DH, character D
.DB 00011100B;code 0EH, character E
.DB 00011110B;code 0FH, character F
.DB 11111111B;code 10H, character blank
.DB 10111111B;code 11H, character -
.DB 00001110B;code 12H, character P
;Characters codes table:
BLANK.EQU 010H;character "blank" code
CH_MIN.EQU 011H;character "-" code
CH_P.EQU 012H;character "P" code
;Master key code:
MK.DB 062H,000H,000H,002H,0D6H,089H,029H,001H
#IF (DEBUG>1)
#INCLUDE "LIBDBG16.ASM"
#ENDIF
.END
Размещено на Allbest.ru
Подобные документы
Распределение функций между аппаратной и программной частями микропроцессорной системы. Выбор микроконтроллера, разработка и описание структурной, функциональной и принципиальной схемы. Выбор среды программирования, схема алгоритма и листинг программы.
курсовая работа [304,4 K], добавлен 17.08.2013Разработка функциональной и принципиальной схемы. Выбор электронного ключа. Передача данных в тайм-слотах. Master для чтения одного бита данных. Разработка программы управления цифровым кодовым замком. Главные особенности функционирования программы.
курсовая работа [970,8 K], добавлен 28.12.2012Разработка функциональной схемы микропроцессорной системы управления насосным агрегатом. Архитектура последовательных шин передачи данных RS232 и ISP. Обоснование выбора элементарной базы микропроцессорной системы: контроллера и приемопередатчика.
курсовая работа [1,6 M], добавлен 10.01.2012Анализ вариантов проектных решений и выбор на его основе оптимального решения. Синтез функциональной схемы микропроцессорной системы на основе анализа исходных данных. Процесс разработки аппаратного и программного обеспечения микропроцессорной системы.
курсовая работа [469,1 K], добавлен 20.05.2014Прокатный стан и его оборудование, их основные типы и характеристики. Автоматизация технологического процесса. Разработка принципиальной схемы, выбор управляющего микроконтроллера. Алгоритм программы управления. Описание используемых интерфейсов.
курсовая работа [1,4 M], добавлен 26.12.2012Назначение и устройство микропроцессорной системы контроля. Описание функциональной схемы микропроцессорной системы контроля. Расчет статической характеристики канала измерения. Разработка алгоритма функционирования микропроцессорной системы контроля.
курсовая работа [42,0 K], добавлен 30.08.2010Основные подходы к решению проблем управления электронным документооборотом. Разработка информационной системы для работы с базой данных (БД). Проектирование логической структуры БД, программная реализация. Тестирование и отладка программного средства.
курсовая работа [1,3 M], добавлен 06.01.2013Разработка структурной схемы и алгоритм функционирования исследуемой микропроцессорной системы (МПС). Модель исследуемой МПС в виде системы массового обслуживания. Листинг программы моделирования на языке GPSS, результаты имитационных экспериментов.
курсовая работа [193,3 K], добавлен 25.11.2013Структура микропроцессорной системы, алгоритм ее управления и передачи сигналов. Карта распределения адресов. Разработка электрической принципиальной схемы и выбор элементной базы. Расчет потребляемого тока, блока питания, программного обеспечения.
курсовая работа [5,1 M], добавлен 22.01.2014Разработка структурной схемы и обобщенного алгоритма работы прибора. Оценка максимальной погрешности линейного датчика давления и нормирующего усилителя. Разработка элементов принципиальной электрической схемы микропроцессорной системы сбора данных.
курсовая работа [2,1 M], добавлен 08.02.2015