历史上的今天
今天是:2025年01月26日(星期日)
2018年01月26日 | HT48R50A的 电源掉电模式示例程序
2018-01-26

; ********************************************
; Function : 电源掉电模式示例程序 *
; MICroProcessor : HT48R50A-1/28SKDIP-A *
; Author: www.picavr.com *
; Crystal : 4MHz *
; ********************************************
#INCLUDE HT48R50A-1.INC
LCD_DATA EQU PB
LCD_DATA_CTRL EQU PBC
LCD_CTRL EQU PC
LCD_CTRL_CTRL EQU PCC
E EQU 5
RS EQU 3
;--------------------------------------------------------------------
DATA .SECTION AT 60H ’DATA’
DELAY_COUNTER_1 DB ? ;[60H]
DELAY_COUNTER_2 DB ? ;[61H]
DELAY_COUNTER_3 DB ? ;[62H]
DATA DB ? ;[63H]
COUNTER DB ? ;[64H]
EXE_INT_FLAG DB ? ;[65H]
;--------------------------------------------------------------------
CODE .SECTION AT 00H ’CODE’
ORG 00
JMP START
ORG 04H
JMP INTERRUPT
ORG 0CH
JMP TIMER1
ORG 20H
START:
CLR LCD_DATA_CTRL
CLR LCD_CTRL_CTRL
CLR LCD_DATA
CLR LCD_CTRL
CLR PAC
CLR EXE_INT_FLAG
CALL LCD_RESET
MOV A,0BH
MOV INTC,A
MOV A,80H
MOV TMR1C,A
SLEEP:
MOV A,OFFSET LCD_MESSAGE_1
MOV TBLP,A
CALL LCD_DISPLAY
HALT
;--------------------------------------------------------------------
SIZ EXE_INT_FLAG
JMP PORT_7
JMP SLEEP
PORT_7:
MOV A,OFFSET LCD_MESSAGE_3
MOV TBLP,A
CALL LCD_DISPLAY
MOV A,OFFSET MUSIC_DATA
MOV TBLP,A
MOV A,08H
MOV COUNTER,A
PLAY_MUSIC:
TABRDL DATA
MOV A,DATA
MOV TMR1L,A
INC TBLP
TABRDL DATA
MOV A,DATA
MOV TMR1H,A
INC TBLP
SET TMR1C.4
CALL DELAY
SDZ COUNTER
JMP PLAY_MUSIC
CLR TMR1C.4
JMP SLEEP
RET
;--------------------------------------------------------------------
INTERRUPT:
MOV A,OFFSET LCD_MESSAGE_2
MOV TBLP,A
CALL LCD_DISPLAY
MOV A,10H
MOV COUNTER,A
MOV A,OFFSET SEGMENT_DATA
MOV TBLP,A
LOOP_INT:
TABRDL DATA
MOV A,DATA
MOV PA,A
CALL DELAY
INC TBLP
SDZ COUNTER
JMP LOOP_INT
SET PA
CLR INTC.4
SET EXE_INT_FLAG
RETI
;--------------------------------------------------------------------
TIMER1:
SZ PC.2
JMP OUTPUT_0
SET PC.2
JMP OUTPUT_END
OUTPUT_0:
CLR PC.2
OUTPUT_END:
RETI
;--------------------------------------------------------------------
LCD_RESET PROC
MOV A,30H ; LCD reset , step 1
MOV LCD_DATA,A ;
CALL WRITE ;
CALL DELAY ; LCD reset , step 2
MOV A,30H ; LCD reset , step 3
MOV LCD_DATA,A ;
CALL WRITE ;
CALL DELAY ; LCD reset , step 4
MOV A,30H ; LCD reset , step 5
MOV LCD_DATA,A ;
CALL WRITE ;
MOV A,38H ; LCD setting , step 1
MOV LCD_DATA,A ; function set
CALL WRITE ;
MOV A,06H ; LCD setting , step 2
MOV LCD_DATA,A ; entry mode set
CALL WRITE ;
MOV A,01H ; LCD setting , step 3
MOV LCD_DATA,A ; display clear
CALL WRITE ;
CALL DELAY ;
MOV A,0EH ; LCD setting , step 4
MOV LCD_DATA,A ; display turn on
CALL WRITE ;
RET
LCD_RESET ENDP
;--------------------------------------------------------------------
LCD_DISPLAY PROC
MOV A,01H ; LCD setting , step 5
MOV LCD_DATA,A ; display clear
CALL WRITE ;
CALL DELAY ;
MOV A,80H ; LCD setting , step 6
MOV LCD_DATA,A ; DD RAM address setting
CALL WRITE ; address = 00h (first line)
SET LCD_CTRL.RS ; LCD setting , step 7
MOV A,10H ; write data to DD RAM
MOV COUNTER,A
DISPLAY1:
TABRDL DATA
MOV A,DATA
MOV LCD_DATA,A
CALL WRITE
INC TBLP
SDZ COUNTER
JMP DISPLAY1
CLR LCD_CTRL.RS ;
MOV A,0C0H ; LCD setting , step 8
MOV LCD_DATA,A ; DD RAM address setting
CALL WRITE ; address = 40h (second line)
SET LCD_CTRL.RS ; LCD setting , step 9
MOV A,10H ; write data to DD RAM
MOV COUNTER,A
DISPLAY2:
TABRDL DATA
MOV A,DATA
MOV LCD_DATA,A
CALL WRITE
INC TBLP
SDZ COUNTER
JMP DISPLAY2
CLR LCD_CTRL.RS
RET
LCD_DISPLAY ENDP
;--------------------------------------------------------------------
WRITE PROC
SET LCD_CTRL.E
CLR LCD_CTRL.E
MOV A,0FFH
MOV DELAY_COUNTER_1,A
WAIT:
SDZ DELAY_COUNTER_1
JMP WAIT
RET
WRITE ENDP
;--------------------------------------------------------------------
DELAY PROC
MOV A,03H
MOV DELAY_COUNTER_1,A
MOV DELAY_COUNTER_2,A
MOV DELAY_COUNTER_3,A
DELAY_WAIT:
SDZ DELAY_COUNTER_3
JMP DELAY_WAIT
SDZ DELAY_COUNTER_2
JMP DELAY_WAIT
SDZ DELAY_COUNTER_1
JMP DELAY_WAIT
RET
DELAY ENDP
;--------------------------------------------------------------------
ORG 0F00H
LCD_MESSAGE_1: ;[Power Down mode!]
;[I am sleePINg..!]
DC 50H,6FH,77H,65H,72H,20H,44H,6FH
DC 77H,6EH,20H,6DH,6FH,64H,65H,21H
DC 49H,20H,61H,6DH,20H,73H,6CH,65H
DC 65H,70H,69H,6EH,67H,2EH,2EH,21H
LCD_MESSAGE_2: ;[INTB wake me up!]
;[Good morning sir]
DC 49H,4EH,54H,42H,20H,77H,61H,6BH
DC 65H,20H,6DH,65H,20H,75H,70H,21H
DC 47H,6FH,6FH,64H,20H,6DH,6FH,72H
DC 6EH,69H,6EH,67H,20H,73H,69H,72H
LCD_MESSAGE_3: ;[PA.7 wake me up!]
;[I love you baby ]
DC 50H,41H,2EH,37H,20H,77H,61H,6BH
DC 65H,20H,6DH,65H,20H,75H,70H,21H
DC 49H,20H,6CH,6FH,76H,65H,20H,79H
DC 6FH,75H,20H,62H,61H,62H,79H,20H
SEGMENT_DATA: ;7 SEGMENT DATA (COMMON ANODE)
DC 081H,0CFH,092H,086H ;0123
DC 0CCH,0A4H,0A0H,08FH ;4567
DC 080H,084H,088H,0E0H ;89AB
DC 0B1H,0C2H,0B0H,0B8H ;CDEF
MUSIC_DATA: ;MUSIC DATA
DC 043H,0FCH,0B1H,0FCH
DC 009H,0FDH,033H,0FDH
DC 083H,0FDH,0C7H,0FDH
DC 005H,0FEH,023H,0FEH
;--------------------------------------------------------------------
END
史海拾趣
|
豪华的单片机开发系统498元 可稳定视频输出的: S3C2410 ARM9开发板780元DSP5402学习开发板II200元 暑期大优惠:S3C44B0开发板(标准版)350元 单片机以太网开发板 180元 DSP5402学习开发板II200元 LABTOOL-48UXP &nb ...… 查看全部问答> |
|
在安装了wince6以后发现vs2005的本地帮助文档不能用了,在修复了本地文档之后,原来的wince6项目又不能用了,在修复wince6,本地文档继续不能用。太郁闷了,大家有什么解决办法啊?… 查看全部问答> |
|
我写了一个很简单的程序,窗口上就两个按钮,用于动态分配和释放内存.打开WinCE.net的SystemProperties的Memory选项卡查看内存情况,发现分配可以,但按了释放内存的按钮却不能释放内存,不知原因,望高手指点!… 查看全部问答> |
|
请教各位一个问题,我们现在用STM32F101VCT6的MCU,用IAR J-LINK下载出现一个错误提示: “Could not write CPU register MSP:Written:0xFFFFFFFF,Read 0xFFFFFFFC” 是什么原因的呢??… 查看全部问答> |
|
大家帮看看为什么DeviceIoControl访问OID_802_11_BSSID_LIST老是失败 如题,下面一段程序中,DeviceIoControl访问OID_802_11_BSSID_LIST老是失败(见下面红色),也就是说bResult一直等于0;为什么?请教牛人!!!可能的问题出现在哪?为什么第二个DeviceIoControl失败?#include \"stdafx.h\"#include <windows.h ...… 查看全部问答> |
|
卓跃教育发现随着采用Android系统的谷歌手机、平板电脑等产品逐渐扩大市场占有率,Android平台人才的缺口日益显现。据业内统计,目前国内的3G研发人才缺口有三、四百万,其中Android研发人才缺口至少30万。&n ...… 查看全部问答> |
|
本项目是一个有着奇特行动方式的机器人,其模仿的是一种被称为“尺蠖”的小虫爬行。所谓尺蠖(huò,与“或”同音),这个名字可能有点生僻,很多人可能未必对得上号,但是如果说弓身爬行的小虫大家应该都会知道,也就是那种把身体曲成弓形后再 ...… 查看全部问答> |




