dukang 发表于 2015-10-25 12:38:56

能转化成c语言吗?这是8279键盘显示实验的汇编代码

CMD_8279        XDATA        0bF01H        ;8279命令字、状态字地址
DATA_8279        XDATA        0bF00H        ;8279读写数据口的地址
KeyCount        DATA        50H       
        ORG        0000H       
        LJMP        STAR       
        ORG        0100H       
STAR:        MOV        SP,#60H       
        ACALL        INIT8279        ;初始化子程序
        MOV        KeyCount,#0       
STAR1:        CALL        SCAN_KEY        ;键扫描
        JNC        STAR1        ;没有按键
        XCH        A,KeyCount       
        INC                A       
        CJNE        A,#9,STAR2       
        MOV        KeyCount,#0       
        ACALL        INIT8279_1        ;8个数码块全有字符显示后,再按键,清除显示
        SJMP        STAR1       
STAR2:        XCH        A,KeyCount       
        CALL        KEY_NUM        ;键值转换为键号
        MOV        DPTR,#LED_TAB        ;字型码表
        MOVC        A,@A+DPTR       
        CALL        WRITE_DATA       
        SJMP        STAR1       
;8279初始化
INIT8279:        MOV        DPTR,#CMD_8279        ;可编程时钟设置,设置分频系数(20分频)
        MOV
MOVX        A,#34H
@DPTR,A       
        CLR                A        ;8*8字符显示,左边输入, 外部译码键扫描方式
        MOV        DPTR,#CMD_8279       
        MOVX        @DPTR,A       
INIT8279_1:        CALL        CLEAR        ;清显示
        MOV        A,#90H        ;从最后一个数码管开始移位显示
        MOVX        @DPTR,A       
        RET               
CLEAR:        MOV        A,#0DEH        ;清除命令
        MOV        DPTR,#CMD_8279       
        MOVX        @DPTR,A       
WAIT1:        MOVX        A,@DPTR       
        JB        ACC.7,WAIT1        ;显示RAM清除完毕吗?
        RET               
SCAN_KEY:        MOV        DPTR,#CMD_8279       
        MOVX        A,@DPTR        ;读状态
READ_FIFO:        ANL        A,#7       
        JZ        NO_KEY        ;是否有键按下
READ:        MOV        A,#40H       
        MOVX        @DPTR,A        ;读FIFO RAM
        MOV        DPTR,#DATA_8279       
        MOVX        A,@DPTR       
        SETB        C        ;有键
SCAN_KEY1:        RET               
NO_KEY:        CLR                C                ;无键按下,清CY
        SJMP        SCAN_KEY1       
KEY_NUM:        ANL        A,#3FH       
        RET               
WRITE_DATA:        MOV        DPTR,#DATA_8279       
        MOVX        @DPTR,A       
        RET                   j
LED_TAB:        DB        0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
        DB        080H,90H,88H,83H,0C6H,0A1H,86H,8EH
               
        END               

黑龍 发表于 2015-10-25 19:40:08

__asm{}中间放上汇编代码

waliemiao 发表于 2015-10-25 20:44:22

前来顶帖:titter:

放开 发表于 2015-10-26 15:23:23

感觉好复杂!
页: [1]
查看完整版本: 能转化成c语言吗?这是8279键盘显示实验的汇编代码