您现在所在的是:

单片机论坛

回帖:3个,阅读:2499 [上一页] [1] [下一页]
905
starli5
文章数:1
年度积分:50
历史总积分:905
注册时间:2006/8/27
发站内信
发表于:2006/8/27 12:23:00
#0楼
;-----------------------------
;2006年电子设计大赛选拔试题
;制作人:李明星
;完成日期:2006。08。21
;晶震:22。1148
;-----------------------------

KEY_1 BIT P1.0
KEY_2 BIT P1.1
KEY_3 BIT P1.2
KEY_4 BIT P1.3
T    EQU 40H
M    EQU 41H

ORG 0000H
AJMP MAIN
ORG 001BH
AJMP _T0_
ORG 0030H

MAIN: MOV SP,#5FH
NOP
       lcall init_main
       lcall init_max7219

LM_M: ACALL DISP
ACALL D10MS
ACALL KEY_SCAN
AJMP LM_M


KEY_SCAN:
MOV P1,#0FFH
MOV C,KEY_1
JNC D1STIME
MOV C,KEY_2
JNC D100MSTIME
MOV C,KEY_3
JNC D10MSTIME
MOV C,KEY_4
JNC D1MSTIME
RET



init_main:
       mov r1,#8
       mov r0,#30h
lp_main:mov @r0,#00h
       inc r0
       djnz r1,lp_main
       ret

D1STIME:
MOV M,#0
CLR F0
MOV T,#100
ACALL INIT_T
JNB F0,$
RET

D100MSTIME:
MOV M,#1
CLR F0
MOV T,#10
ACALL INIT_T
JNB F0,$
RET

D10MSTIME:
MOV M,#2
CLR F0
MOV T,#1
ACALL INIT_T
JNB F0,$
RET

D1MSTIME:
MOV M,#2
CLR F0
MOV T,#1
ACALL INIT_T
JNB F0,$
RET

INIT_T:
MOV TMOD,#15H
MOV TH1,#0B8H
MOV TL1,#03H
SETB ET1
CLR ET0
SETB EA
SETB TR0
SETB TR1
RET

_T0_: MOV TH1,#0B8H
MOV TL1,#03H
DJNZ T,_T0_NEXT
CLR TR0
CLR TR1
SETB F0
ACALL DAT_CONVERSION
MOV TH0,#00H
MOV TL0,#00H
ACALL MOVE_M
ACALL DISP
_T0_NEXT:RETI

MOVE_M: nop
       mov a,m
       cjne a,#00h,move_2
       ret
       mov a,m
move_2: cjne a,#01h,move_3

       mov 35h,34h
       mov 34h,#0
       mov 34h,33h
       mov 33h,#0
       mov 33h,32h
       mov 32h,#0
mov 32h,31h
mov 31h,#0
mov 31h,30h
mov 30h,0
       ret
       mov a,m
move_3: cjne a,#02h,move_ret
       mov 36h,34h
       mov 34h,#0
       mov 35h,33h
       mov 33h,#0
       mov 34h,32h
       mov 32h,#0
mov 33h,31h
mov 31h,#0
mov 32h,30h
mov 30h,#0
move_ret:    ret

dat_conversion:

       mov a,th0
       rrc a
       mov r2,a
       mov a,tl0
       rrc a
       mov r3,a
       acall ibtd2
       mov a,r6
       anl a,#0fh
       mov 30h,a
       mov a,r6
       anl a,#0f0h
       swap a
       mov 31h,a
       mov a,r5
       anl a,#0fh
       mov 32h,a
       mov a,r5
       anl a,#0f0h
       swap a
       mov 33h,a
       mov a,r4
       anl a,#0fh
       mov 34h,a
       ret

;*********************************
;*        双字节HEX->BCD         *
;* 入口:R2R3为双字节16位二进制数 *
;* 出口:R4R5R6为转换完的压缩BCD  *
;*********************************
IBTD2:  CLR A
       MOV R4,A
       MOV R5,A
       MOV R6,A
       MOV R7,#16
LM_BCD: CLR C
       MOV A,R3
       RLC A
       MOV R3,A
       MOV A,R2
       RLC A
       MOV R2,A
       MOV A,R6
       ADDC A,R6
       DA A
       MOV R6,A
       MOV A,R5
       ADDC A,R5
       DA A
       MOV R5,A
       MOV A,R4
       ADDC A,R4
       DA A
       MOV R4,A
       DJNZ R7,LM_BCD
       RET


;************************************************
;*                   初始化max7219              *
;* 程序创建时间:2006-04-14                      *
;* 最后修改时间:2006-                           *
;* 影响资源:P1.7--CLK  P1.6--DIN  P1.4--CS7219  *
;* 占用寄存器:50H,51H,52H                       *
;************************************************
       clk bit p1.7
       din bit p1.6
       cs7219 bit p1.4
       scan_lim equ 50h        ;扫描界限
       ctrl_7219 equ 51h       ;控制字
       ctrl_byte equ 52h       ;控制子存储器
init_max7219:
       setb clk
       setb cs7219
       mov scan_lim,#07h
       mov ctrl_7219,#09h      ;译码方式
       mov ctrl_byte,#0ffh
       lcall t_max7219
       mov ctrl_7219,#0ah       ;亮度
       mov ctrl_byte,#0fh
       lcall t_max7219
       mov ctrl_7219,#0bh      ;扫描界限
       mov ctrl_byte,scan_lim
       lcall t_max7219
       mov ctrl_7219,#0ch      ;停机状态
       mov ctrl_byte,#01h
       lcall t_max7219
       mov ctrl_7219,#0fh      ;测试状态
       mov ctrl_byte,#00h
       lcall t_max7219
       ret
;************************
;* 传送16位数据
;*
;************************
t_max7219:
       mov a,ctrl_7219
       mov b,#08h
       clr cs7219
max7219_h8:
       nop
       clr clk
       rlc a
       mov din,c
       nop
       setb clk
       djnz b,max7219_h8
       mov a,ctrl_byte
       mov b,#08h
max7219_l8:
       nop
       clr clk
       rlc a
       mov din,c
       nop
       setb clk
       djnz b,max7219_l8
       setb cs7219
       ret
;*****************************
;* 显示程序
;* 显示缓冲区地址:30H--37H
;************
disp:   setb rs1
       clr rs0
ORL 33H,#80H      ;<---------------------------------
       ORL 36H,#80H      ;<---------------------------------
       mov r0,scan_lim                 ;循环扫描次数
       inc r0
       mov a,scan_lim
       add a,#30h
       mov r1,a                        ;显示缓冲区地址
lp
附件:
[本地下载]
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2006/7/7
发站内信
发表于:2006/8/28 23:59:00
#1楼
该用户被锁定,回复内容不予显示!
953
xujian6063
文章数:27
年度积分:50
历史总积分:953
注册时间:2007/9/16
发站内信
发表于:2007/10/5 19:08:00
#2楼
ding!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
913
123455516
文章数:5
年度积分:50
历史总积分:913
注册时间:2008/5/26
发站内信
发表于:2008/5/27 0:20:00
#3楼
顶个

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005