📄 main.s
字号:
.module main.c
.area data
_data::
.blkb 2
.area idata
.word 1
.area data
.blkb 2
.area idata
.word 7
.area data
.blkb 2
.area idata
.word 2007
.area data
_naozhong::
.blkb 1
.area idata
.byte 0
.area data
_KB_valve::
.blkb 1
.area idata
.byte 0
.area data
.area text
; i -> 0,X
; j -> 1,X
_main::
ais #-2
tsx
; /*-----------------------------------------------------*
; *工 程 名:Lcd.prj *
; *硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接 *
; * 2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接 *
; *功能:1.初始显示:"Wait Receiving.." "Soochow 2005.08" *
; * 2.等待接收字符,当收到32个字符时显示,重复此功能 *
; *----------《嵌入式应用技术基础教程》教学实例---------*/
; /*[头文件]*/
; #include "SCI.h" //串行通信子程序头文件
; #include "GP32C.h" //包含头文件
; #include "KB.h" //键盘中断头文件
; /*[函数声明]*/
; extern void lcdshow(unsigned char *str1,unsigned char *str2);
; extern void SCIInit(void);
; extern void Akey(void);
; void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] ); //闹钟时间日期的显示的初始化
; void Timer1init(void);
; /*[主程序]*/
; #define TSTOPBit 5 //定时器计数停止位
; #define TOFBit 7 //定时器溢出标志位
; unsigned char time[3], *str1,*str2,alart[2]; //存放时、分、秒
; unsigned int data[3]={1,7,2007}; //存放日,月,年
; unsigned char clockstr[],datestr[],naozhong=0,KB_valve=0;
; void main()
; {
; unsigned char i;
; unsigned char j;
; DDRA=0x0ff; //定义pta口为输出
lda #-1
sta 0x4
; PTA=0x00; // 初值是0
clr 0
; asm("SEI"); //关总中断
SEI
; KB_Init(); //键盘初始化
jsr _KB_Init
; SCIInit(); //调串行口初始化子程序
jsr _SCIInit
; Timer1init(); //调定时器1初始化子程序
jsr _Timer1init
tsx
; SCC2|=(1<<5); //令SCC2.5=1,允许接收中断
bset #5,0x14
; INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
bclr #1,0x1a
; asm("CLI"); //开总中断
CLI
; i=time[0];
lda *_time
sta ,X
bra L3
L2:
; while(1)
; {
; j=time[0];
lda *_time
sta 1,X
; if (i!=j) //数组已经更新
lda ,X
cmp 1,X
beq L5
; { sys_init( time, data, alart );
ldhx #_alart
pshx
pshh
ldhx #_data
pshx
pshh
ldhx #_time
pshx
pshh
jsr _sys_init
ais #6
; lcdshow((unsigned char *)datestr,(unsigned char *)clockstr); i=j;} //发送新数据
lda #<_clockstr
psha
lda #>_clockstr
psha
lda #<_datestr
psha
lda #>_datestr
psha
jsr _lcdshow
ais #4
tsx
lda 1,X
sta ,X
L5:
; if(naozhong==1)
lda *_naozhong
cmp #1
bne L7
; {
bra L10
L9:
; while(1)
; { naozhong=0;
clr *_naozhong
; if(KB_valve=='0')break;
lda *_KB_valve
cmp #48
bne L12
bra L11
L12:
L10:
bra L9
L11:
; }
; }
L7:
; if( KB_valve== 'A')Akey();
lda *_KB_valve
cmp #65
bne L14
jsr _Akey
tsx
L14:
L3:
bra L2
X0:
L1:
ais #2
.dbline 0 ; func end
rts
_Timer1init::
;
;
; }
; }
; /*[内部直接调用子程序存放处]*/
; /*Timer1init:定时器1初始化子程序-----------------------*
; *功能:对定时器1初始化 *
; *参数:无 *
; *返回:无 *
; *-----------------------------------------------------*/
; void Timer1init(void)
; {
; //允许溢出中断、不启动计数、分频因子=64
; T1SC=0b01100110;
lda #102
sta 0x20
; //计数寄存器初值=0x0000
; T1CNTH=0x00; T1CNTL=0x00;
clr 0x21
clr 0x22
; //1秒产生1次溢出中断,计数寄存器=1×(2457600/64)=9600
; T1MODH=0x96; T1MODL=0x00;
lda #-106
sta 0x23
clr 0x24
; //允许定时器1计数寄存器计数
; T1SC&=~(1<<TSTOPBit);
bclr #5,0x20
L16:
.dbline 0 ; func end
rts
.area bss
_datestr::
.blkb 1
_clockstr::
.blkb 1
_alart::
.blkb 2
_str2::
.blkb 2
_str1::
.blkb 2
_time::
.blkb 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -