我的学习之旅(19)console.h和console.c

49 篇文章 0 订阅
49 篇文章 0 订阅
/*屏幕向上翻一行,等同于屏幕向下移动一行*/
static void screen_up(void)
{
    int i;
    unsigned char *src;
    unsigned char *dest;
    unsigned int len;
    /*是否需要整个屏幕向上翻一行*/
    if ( g_screen_top == 0 && g_screen_bottom == DISP_MAX_Y ) {      
        //刷新屏幕在显存中位置
        g_screen_origin += BYTES_FOR_ONE_LINE;
        g_screen_end += BYTES_FOR_ONE_LINE;
        /*刷新光标位置为换行*/
        g_position += BYTES_FOR_ONE_LINE; 
        if( g_screen_end > DISP_END_ADDR )  {/*如果屏幕在显存中位置超出了显存本身的范围*/
            /*将屏幕内容刷新到DISP_BASE_ADDR处*/
            src = (unsigned char *)g_screen_origin;
            dest = (unsigned char *)DISP_BASE_ADDR;
            len = (g_screen_end - g_screen_origin);
            for(i = 0; i < len; i++) {
                dest[i] = src[i];
            }
            /*刷新光标位置和屏幕起始和结束地址*/
            g_screen_end = DISP_BASE_ADDR + len;
            g_position = DISP_BASE_ADDR + (g_position - g_screen_origin);
            g_screen_origin = DISP_BASE_ADDR;
            
        }
        else {
            
        }
        set_screen_origin(1);
    }
    else { /*不支持*/

    }
}
/*屏幕向下翻一行*/
static void screen_down(void)
{
}
static void add_a_line(void)
{
    /*如果不是最底下的一行*/
    if( g_y + 1 < DISP_MAX_Y ) {
        g_y++;
        g_position += BYTES_FOR_ONE_LINE; 
        return;
    }
    /*否则就要刷新整个屏幕的数据*/
    screen_up();
}
//用空格字符填充被删除的字符
static void delete_char(void)
{
    if( g_x > 0 ) {
        g_position -= 2;
        g_x--;
        *(unsigned short *)g_position = ((DISP_FG_WHITE + DISP_BG_BLACK) << 8 )|(0x20);//0x20是空格字符
    }
    return;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值