⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.lst

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 LST
字号:
C51 COMPILER V7.06   FUNCTION                                                              10/29/2006 14:32:39 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE FUNCTION
OBJECT MODULE PLACED IN Function.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Function.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <./Atmel/at89x52.h>
   2          #include <stdio.h>
   3          #include <absacc.h>
   4          #include <intrins.h>
   5          #include <string.h>
   6          #include "source.h"
   7          void Msm_init(void){//初始化msm6255
   8   1              MCSIO_ENABLE();
   9   1              REG_INSTR=0X00;//选择模式控制寄存器
  10   1              REG_DATA=0X0b;//光标关,显示开,4比特并行图形模式
  11   1              REG_INSTR=0X01;//选择字符点数寄存器
  12   1              REG_DATA=0X07;//一个字节的全部数据显示到屏幕上
  13   1              REG_INSTR=0X02;//选择水平字符个数寄存器
  14   1              REG_DATA=80;//每行显示81个字符,也就是81x8=648个点,这是根据AF1的时序设置的
  15   1              REG_INSTR=0X03;//选择显示行数寄存器
  16   1              REG_DATA=239;//选择行数为240行,因为是并行模式,所以总共为240x2=480行
  17   1              REG_INSTR=0X05;//选择低端开始地址寄存器
  18   1              REG_DATA=0;    //设置显示存开始开始地址的低8位为0
  19   1              REG_INSTR=0X06;//选择高端开始地址寄存器
  20   1              REG_DATA=0;        //设置显示存开始开始地址的高8位为0,这样显存开始地址就从0开始
  21   1      }
  22          void Clear_Screen(void){//清除整个屏幕
  23   1              int i;
  24   1              VRAM_BUSY=1;
  25   1              for(i=0;i<81*480;i++){
  26   2                      while(VRAM_BUSY==0);//如果MSM6255正在取数据则等待
  27   2                      MCSIO_DISABLE();//把MSM6255的DIEN信号设置为低,访问显存
  28   2                      XBYTE[i]=0;//把显存相应的位置设置为0
  29   2                      MCSIO_ENABLE();//把MSM6255的DIEN信号设置为高,屏幕显示有效
  30   2              }
  31   1      }
  32          void Draw_Pic(int x,int y,int w,int h,unsigned char *buf){
  33   1              //在屏幕的x,y的位置上画高为h,宽度为W的图片,x和w必须为8的倍数,buf为图片数据
  34   1              int i,j;
  35   1              int vrbase;
  36   1              VRAM_BUSY=1;
  37   1              x=x/8;
  38   1              w=w/8;
  39   1              vrbase=SCREEN_WIDTH*y+x;//确定起始位置
  40   1              for(j=0;j<h;j++){//遍历所有图片数据
  41   2                      for(i=0;i<w;i++){//画一行数据
  42   3                              while(VRAM_BUSY==0);//如果MSM6255正在取数据则等待
  43   3                              MCSIO_DISABLE();//把MSM6255的DIEN信号设置为低,访问显存
  44   3                              XBYTE[vrbase+i]=*(buf+j*SCREEN_WIDTH+i);//设置显存相应的为图片的数值
  45   3                              MCSIO_ENABLE();//把MSM6255的DIEN信号设置为高,屏幕显示有效
  46   3                      }
  47   2                      vrbase +=SCREEN_WIDTH;//换下一行
  48   2              }
  49   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    394    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      17
C51 COMPILER V7.06   FUNCTION                                                              10/29/2006 14:32:39 PAGE 2   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -