51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
电子屏字符显示器 2(汇编)
发布时间:2009/6/2  阅读次数:379  字体大小: 【】 【】【

作者:未知       来源:89s52.cn

; *************************
; *   可在系统修改程序         *
; *   电子屏字符显示器         *
; *     "电子设计"               *
; *************************
;                   四个显示字符数据表以在50H-6FH单元内,字符用8*8点阵,R4(30H)用于
;                   控制显示静止字的时间,R5(31H)静止字显示跳转地址步距,B内放显示首址
;
                               T2CON                     EQU         0C8H       ; T2 控制寄存器
                               T2MOD                     EQU         0C9H       ;
                               TL2                         EQU         0CCH       ; T2 计数寄存器低字节
                               TH2                         EQU         0CDH       ; T2 计数寄存器高字节
                               TR2                         EQU         0CAH       ; T2 启动位
                               RCAP2L                   EQU         0CAH       ; T2 计数重栽寄存器低字节
                               RCAP2H                   EQU         0CBH       ; T2 计数重栽寄存器高字节
                               CHPCON                   EQU         0BFH       ; 在系统编程控制寄存器
                               CHPENR                   EQU         0F6H       ; 编程状态下 MTP ROM 的控制字节寄存器
                               SFRAL                     EQU         0C4H       ; 编程状态下的目标低地址
                               SFRAH                     EQU         0C5H       ; 编程状态下的目标高地址
                               SFRFD                     EQU         0C6H       ; 编程状态下 MTP ROM 的编程数据
                               SFRCN                     EQU         0C7H       ;
                               TXOKFLAG               EQU         003H
;
;
ORG         0000H
LJMP       START
;
;************;
;中断入口程序;
;************;
;
ORG         0003H
RETI
ORG         000BH
RETI
ORG         0013H
RETI
ORG         001BH
RETI
ORG         0023H
LJMP       INTS
ORG         002BH
RETI
;
;初始化
CLEARMEN:             MOV         PSW, #00H                             ; 设第一组寄存器
                               MOV         SP, #0F1H                             ; 设置堆栈指针
                               MOV         SCON, #01010000B   ; 串口工作方式1(8 BIT UART) 允许接收
                               MOV         T2CON, #00110000B             ; T2CON
                               MOV         A,#0ECH
                               MOV         TL2, A                                   ;设置波特率 ( 19200)
                               MOV         RCAP2L, A                             ;
                               MOV         A,#0FFH
                               MOV         TH2, A                                   ;
                               MOV         RCAP2H, A                             ;
                               SETB       ES                                           ; 允许串口中断
                               MOV         IP, #00H                               ; 低优先级
                               SETB       TR2                                         ; 启动定时计数器 2
                               SETB       REN                                         ; 启动串口接收中断
                               CLR         TI                                           ; 清串口发送中断标志位
                               CLR         RI                                           ; 清串口接收中断标志位
                               SETB       EA                                           ; 开放所有中断
                               RET
CLEARMEN1:           MOV         A,#0FFH
                               MOV         P1,A
                               MOV         P2,A
                               MOV         P3,A
                               MOV         P0,A
                               MOV         DPTR,#TAB2
                               CLR         A
                               MOV         20H,A
                               MOV         21H,A
                               MOV         22H,A
                               MOV         23H,A
                               MOV         R3,A
                               MOV         R1,#50H
                               MOV         R2,#20H
CLLOOP:                 MOVC         A,@A+DPTR
                               MOV         @R1,A
                               MOV         A,R3
                               INC         A
                               MOV         R3,A
                               INC         R1
                               DJNZ       R2,CLLOOP
                               MOV         30H,#0A0H
                               MOV         31H,#08H
                               RET
;
START:                   LCALL       CLEARMEN                   ;初始化
                               LCALL       CLEARMEN1
START1:                 LCALL       DISP1
                               AJMP         START1
PUTPASS:               MOV     DPTR,#PASSTBL                     ;
                               LCALL   DISPINFO                             ;显示"Pass Error"
                               AJMP     LOOP3                                 ;
APROM:                   LJMP   APROMOUT                               ;
;
;
DISP1:                   MOV         B,#50H
                               MOV         R4,30H
                               MOV         R5,31H
LOOP:                     JBC         04H,APROM                   ;进入4K-LDROM模式处理程序
                               JBC         05H,PUTPASS               ;口令提示处理程序
LOOP3:                   LCALL     DISPLAY
                               DJNZ       R4,LOOP
                               MOV         R4,30H
                               MOV         A,B
                               CJNE       A,#68H,CONT
                               RET
CONT:                     ADD         A,R5
                               MOV         B,A
                               AJMP       LOOP
;
;
DISPLAY:               MOV         A,#0FFH
                               MOV         P0,A
                               MOV         P2,A
                               MOV         R6,#0FEH
                               MOV         R0,B
                               MOV         R7,#08H
DISLOOP:               MOV         A,@R0
                               MOV         P0,A
                               MOV         P2,R6
                               LCALL     DL1MS
                               INC         R0
                               MOV         A,R6
                               RL           A
                               MOV         R6,A
                               DJNZ       R7,DISLOOP
                               RET
;
;
DL1MS:                   MOV         R3,#0FFH   ;256*4
LOOPK:                   NOP
                               NOP
                               DJNZ       R3,LOOPK
                               RET
;
;
TAB1:     DB           0EFH,83H,0ABH,83H,0ABH,83H,0EEH,0E0H       ;     电
               DB           0FFH,0C7H,0EFH,83H,0EFH,0EFH,0CFH,0EFH   ;     子
               DB           0B1H,0B5H,04H,0BFH,0B1H,0B5H,9BH,0A4H     ;     设
               DB           0BBH,0BBH,1BH,0A0H,0BBH,0BBH,9BH,0BBH     ;     计
               DB           00H,00H,00H,00H
;
TAB2:     DB           0F7H,0EFH,0C1H,0D5H,000H,0D5H,0D9H,0BDH   ;舟
               DB           0FFH,0F7H,0F7H,0F7H,0D5H,0D5H,0C1H,0FFH   ;山
               DB           0F7H,0EFH,0C1H,0D5H,000H,0D5H,0D9H,0BDH   ;舟
               DB           0FFH,0F7H,0F7H,0F7H,0D5H,0D5H,0C1H,0FFH   ;山
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;                     进入4K-LDROM的程序           ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTS:             PUSH PSW                                   ;堆栈保护
                       PUSH ACC                                   ;
                       PUSH B                                   ;
                       MOV   PSW,#08H                             ;启用第1组寄存器
                       JBC   RI,RXINTS                           ;RI为1,接收中断,RI清0
                       JNB   TI,INTSOUT                         ;TI为0,中断退出
                       CLR   TI                                   ;TI为1,先清0
                       SETB TXOKFLAG                             ;设发送OK标志
                       LJMP INTSOUT                               ;中断退出
;
RXINTS:         MOV   A,SBUF                                 ;接收中断处理。
                       XRL   A,#0DH                                 ;是否回车符
                       JNZ   PASSFLAG                             ;不是回车,口令出错处理
                       SETB 04H                                   ;进入4K-LDROM标志置1
INTSOUT:       POP   B                                   ;出栈
                       POP   ACC                                   ;
                       POP   PSW                                   ;
                       RETI                                     ;中断退出
PASSFLAG:     SETB 05H                                   ;口令出错标志置1
                       LJMP INTSOUT                               ;中断退出
;
;口令出错提示表
PASSTBL:       DB     "   pass ERROR !   ",0DH,0AH,0FFH,0FFH,0FFH,0FFH,0FFH
                       RET
; DPTR 内容是表的首址
; 显示表格内容
DISPINFO:             CLR         A                                             ;
                               MOV         R2, A                                     ;
READDISPCODE:     MOV         A, R2                                     ;
                               MOVC       A, @A+DPTR                           ; 查表
                               MOV         R1, A                                     ;
                               INC         R2                                           ; 计数器加一
                               MOV         A, R2                                     ;
                               JNZ         READOVER                               ; 计数器溢出处理
                               INC         DPH                                         ;
READOVER:             MOV         A, R1                                     ;
                               INC         A                                             ;
                               JZ           DISPINFOOUT                         ; 读到结束符结束
                               CLR         TXOKFLAG                               ;
                               DEC         A                                             ;
                               LCALL     PUTCHAR                                 ; 发送字符
                               LJMP       READDISPCODE                       ;
DISPINFOOUT:       RET
; A 内容待发字符
PUTCHAR:               CLR         TXOKFLAG                               ;
                               MOV         SBUF, A                                 ;
                               JNB         TXOKFLAG, $                         ;
                               RET

APROMOUT:     MOV   CHPENR,#87H           ;进入LDROM方式
                       MOV   CHPENR,#59H
                       MOV   CHPCON,#03H
                       MOV   TCON,#00H               ;关T0、T1
                       MOV   T2CON,#00H             ;关T2
                       MOV   IP,#00H                   ;同优先级
                       MOV   IE,#82H                   ;允许T0中断,总中断开放
                       MOV   TL0,#0FBH               ;装初值,定时为5微秒
                       MOV   TH0,#0FFH
                       MOV   TMOD,#01H               ;T0为16位定时器
                       MOV   TCON,#10H               ;开启T0
                       MOV   PCON,#01H             ;进入在线编程模式,等待唤醒后进入4K-LDROM程序
END                  ;程序结束

  

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号