;----------------------------------------------------------------*
;工 程 名:KB_ASM.mcp                                             *
;硬件连接:                                                       *
;    (1)MCU与键盘连接见"KeyBoard.c"文件中的说明                  *
;程序描述:主函数一直在查询是否有键被按下以及什么键被按           *
;         下，串口发送对应的键值和定义值(十六进制显示)           *
;目    的:键盘扫描,键值识别,键值转换                             *
;注    意:如果键盘插在实验板的上排插孔,无须连线,若插在           *
;         下排插孔,需手工接线                                    *
;--------清华2009版《嵌入式技术基础与实践》实例------------------*

 INCLUDE 'Includes.inc'

 XDEF _Startup, main            ;定义可以被外部调用的函数
 XREF __SEG_END_SSTACK 

; 变量段
MY_ZEROPAGE: SECTION  SHORT     ;在此处定义变量

; 代码段
MyCode:      SECTION  

main:
_Startup:
        SEI
        LDHX  #RAMEndAddr+1     ;初始化堆栈指针               
        TXS  
        JSR MCUInit             ;芯片初始化  
        JSR SCIInit             ;串口初始化
        JSR KBIInit             ;键盘初始化
        JSR EnableKBint         ;开放键盘接收中断
        CLI                     ;开放总中断   
mainLoop:
        NOP
        NOP
        AIS #-2
        LDA #10
        JSR KBscanN             ;扫描得到键值
        STA 1,SP
        
        LDHX #20
        JSR DelayHX
        
        CMP #$FF
        BEQ Main_End
        
        JSR KBdef
        STA 2,SP                ;将键值转化为定义值
        
        LDA 1,SP
        JSR SCISend1
        LDA 2,SP
        JSR SCISend1
        
        LDA #$FF
        STA 1,SP
        
        AIS #2                 ;在每一次的循环中将开辟的内存单元释放掉
Main_End:      
        BRA mainLoop

