Проектирование микропроцессорной системы управления электронным замком

Автоматизация процесса защиты противопожарного инвентаря и средств пожаротушения. Проект микропроцессорной системы управления электронным замком: разработка концепции и структуры АС. Программное обеспечение микроконтроллера, листинг программы и прошивки.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.