0424 静态显示字符电路 行列矩阵式密码锁

一:功能描述

做出行列矩阵式密码锁和静态显示字符电路

二:程序

$NOMOD51

;------------------------------------------------------------------------------

;  This file is part of the C51 Compiler package

;  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.

;  Version 8.01

;

;  *** <<< Use Configuration Wizard in Context Menu >>> ***

;------------------------------------------------------------------------------

;  STARTUP.A51:  This code is executed after processor reset.

;

;  To translate this file use A51 with the following invocation:

;

;    A51 STARTUP.A51

;

;  To link the modified STARTUP.OBJ file to your application use the following

;  Lx51 invocation:

;

;    Lx51 your object file list, STARTUP.OBJ  controls

;

;------------------------------------------------------------------------------

;

;  User-defined <h> Power-On Initialization of Memory

;

;  With the following EQU statements the initialization of memory

;  at processor reset can be defined:

;

; <o> IDATALEN: IDATA memory size <0x0-0x100>

;    <i> Note: The absolute start-address of IDATA memory is always 0

;    <i>      The IDATA space overlaps physically the DATA and BIT areas.

IDATALEN        EQU    80H

;

; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>

;    <i> The absolute start address of XDATA memory

XDATASTART      EQU    0   

;

; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>

;    <i> The length of XDATA memory in bytes.

XDATALEN        EQU    0     

;

; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>

;    <i> The absolute start address of PDATA memory

PDATASTART      EQU    0H

;

; <o> PDATALEN: PDATA memory size <0x0-0xFF>

;    <i> The length of PDATA memory in bytes.

PDATALEN        EQU    0H

;

;</h>

;------------------------------------------------------------------------------

;

;<h> Reentrant Stack Initialization

;

;  The following EQU statements define the stack pointer for reentrant

;  functions and initialized it:

;

; <h> Stack Space for reentrant functions in the SMALL model.

;  <q> IBPSTACK: Enable SMALL model reentrant stack

;    <i> Stack space for reentrant functions in the SMALL model.

IBPSTACK        EQU    0      ; set to 1 if small reentrant is used.

;  <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>

;    <i> Set the top of the stack to the highest location.

IBPSTACKTOP    EQU    0xFF +1    ; default 0FFH+1 

; </h>

;

; <h> Stack Space for reentrant functions in the LARGE model.     

;  <q> XBPSTACK: Enable LARGE model reentrant stack

;    <i> Stack space for reentrant functions in the LARGE model.

XBPSTACK        EQU    0      ; set to 1 if large reentrant is used.

;  <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>

;    <i> Set the top of the stack to the highest location.

XBPSTACKTOP    EQU    0xFFFF +1  ; default 0FFFFH+1

; </h>

;

; <h> Stack Space for reentrant functions in the COMPACT model.   

;  <q> PBPSTACK: Enable COMPACT model reentrant stack

;    <i> Stack space for reentrant functions in the COMPACT model.

PBPSTACK        EQU    0      ; set to 1 if compact reentrant is used.

;

;  <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>

;    <i> Set the top of the stack to the highest location.

PBPSTACKTOP    EQU    0xFF +1    ; default 0FFH+1 

; </h>

;</h>

;------------------------------------------------------------------------------

;

;  Memory Page for Using the Compact Model with 64 KByte xdata RAM

;  <e>Compact Model Page Definition

;

;  <i>Define the XDATA page used for PDATA variables.

;  <i>PPAGE must conform with the PPAGE set in the linker invocation.

;

; Enable pdata memory page initalization

PPAGEENABLE    EQU    0      ; set to 1 if pdata object are used.

;

; <o> PPAGE number <0x0-0xFF>

; <i> uppermost 256-byte address of the page used for PDATA variables.

PPAGE          EQU    0

;

; <o> SFR address which supplies uppermost address byte <0x0-0xFF>

; <i> most 8051 variants use P2 as uppermost address byte

PPAGE_SFR      DATA    0A0H

;

; </e>

;------------------------------------------------------------------------------

; Standard SFR Symbols

ACC    DATA    0E0H

B      DATA    0F0H

SP      DATA    81H

DPL    DATA    82H

DPH    DATA    83H

                NAME    ?C_STARTUP

?C_C51STARTUP  SEGMENT  CODE

?STACK          SEGMENT  IDATA

                RSEG    ?STACK

                DS      1

                EXTRN CODE (?C_START)

                PUBLIC  ?C_STARTUP

                CSEG    AT      0

?C_STARTUP:    LJMP    STARTUP1

                RSEG    ?C_C51STARTUP

STARTUP1:

IF IDATALEN <> 0

                MOV    R0,#IDATALEN - 1

                CLR    A

IDATALOOP:      MOV    @R0,A

                DJNZ    R0,IDATALOOP

ENDIF

IF XDATALEN <> 0

                MOV    DPTR,#XDATASTART

                MOV    R7,#LOW (XDATALEN)

  IF (LOW (XDATALEN)) <> 0

                MOV    R6,#(HIGH (XDATALEN)) +1

  ELSE

                MOV    R6,#HIGH (XDATALEN)

  ENDIF

                CLR    A

XDATALOOP:      MOVX    @DPTR,A

                INC    DPTR

                DJNZ    R7,XDATALOOP

                DJNZ    R6,XDATALOOP

ENDIF

IF PPAGEENABLE <> 0

                MOV    PPAGE_SFR,#PPAGE

ENDIF

IF PDATALEN <> 0

                MOV    R0,#LOW (PDATASTART)

                MOV    R7,#LOW (PDATALEN)

                CLR    A

PDATALOOP:      MOVX    @R0,A

                INC    R0

                DJNZ    R7,PDATALOOP

ENDIF

IF IBPSTACK <> 0

EXTRN DATA (?C_IBP)

                MOV    ?C_IBP,#LOW IBPSTACKTOP

ENDIF

IF XBPSTACK <> 0

EXTRN DATA (?C_XBP)

                MOV    ?C_XBP,#HIGH XBPSTACKTOP

                MOV    ?C_XBP+1,#LOW XBPSTACKTOP

ENDIF

IF PBPSTACK <> 0

EXTRN DATA (?C_PBP)

                MOV    ?C_PBP,#LOW PBPSTACKTOP

ENDIF

                MOV    SP,#?STACK-1

; This code is required if you use L51_BANK.A51 with Banking Mode 4

;<h> Code Banking

; <q> Select Bank 0 for L51_BANK.A51 Mode 4

#if 0 

;    <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.

EXTRN CODE (?B_SWITCH0)

                CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0

#endif

;</h>

                LJMP    ?C_START

                END

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359

推荐阅读更多精彩内容