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

📄 main.lst

📁 单片机实现在的电子琴
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  11/22/2008 13:59:23 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //*****************************
   2          //键盘提示音
   3          //*****************************
   4          #include<reg52.h>
   5                    
   6          //包含自己使用的键盘驱动的头文件, 以调用获取按键值的函数
   7          #include"key_4x3.h"
   8          //如果还没学会多文件编程,可以将自己的键盘扫描程序,
   9          //放到本文件里,直接调用里面的函数,并去掉#include"key_4x3.h"
  10          
  11          #define uchar unsigned char
  12          #define uint  unsigned int
  13          
  14          //IO口和位定义
  15          #define LIGHT P1
  16          sbit bell = P0^1;
  17          sbit led  = P0^2;
  18          
  19          uchar keynum;   //按键序号
  20          bit flag = 0;   //键盘扫描标志[尽量用字节数少的数据类型]
  21          
  22          //****************************
  23          //短促的提示声
  24          //****************************
  25          void bi(void)    
  26          {
  27   1          bell = 1;   //响
  28   1              led  = 0;       //灯亮
  29   1      }  
  30          //****************************
  31          //初始化,使蜂鸣器和灯不工作
  32          //****************************
  33          void Initi(void)
  34          {
  35   1          bell = 0;  // 不响 [0或1由自己使用的电路决定]
  36   1              led  = 1;  // 灯灭
  37   1      }
  38          
  39          //////////////////////////////////////////// 
  40          void main(void)
  41          {       
  42   1              TMOD = 0x01;  //定时器0,16位工作方式 
  43   1              TH0  = (65536 - 10000) / 256;  //给定时器高8位装入初值
  44   1          TL0  = (65536 - 10000) % 256;  //给定时器低8位装入初值      
  45   1              ET0  = 1;     //打开定时器0中断
  46   1              EA   = 1;     //打开总中断      [两者都打开才行]         
  47   1              TR0  = 1;         //启动定时器
  48   1      
  49   1              Initi();   //简单初始化一下
  50   1              while(1)
  51   1              {  
  52   2                  if(flag)    
  53   2                      {                           
  54   3                              keynum = KEY_num(0); //键盘扫描后返回按键序号 1~12,换成自己的键盘扫描函数,
  55   3                              flag = 0;
C51 COMPILER V8.02   MAIN                                                                  11/22/2008 13:59:23 PAGE 2   

  56   3                      }                 
  57   2                      switch(keynum)    
  58   2                      {
  59   3                          case 1:bi(); LIGHT = 0xfe;    break;   // 按键1
  60   3                              case 2:bi(); LIGHT = 0xfe<<1; break;   // 按键2
  61   3                              case 3:bi(); LIGHT = 0xfe<<2; break;   // 按键3
  62   3                              case 4:bi(); LIGHT = 0xfe<<3; break;
  63   3                              case 5:bi(); LIGHT = 0xfe<<4; break;
  64   3                              case 6:bi(); LIGHT = 0xfe<<5; break;
  65   3                              case 7:bi(); LIGHT = 0xfe<<6; break;
  66   3                              case 8:bi(); LIGHT = 0xfe<<7; break;   // 按键8
  67   3                              case 9:
  68   3                              case 10:
  69   3                              case 11:
  70   3                              case 12:bi();                 break;
  71   3                              default: Initi();             break;  //如果没有,一直响 
  72   3                      }          
  73   2              } 
  74   1      }
  75          //中断服务
  76          void KeyScan(void) interrupt 1 using 0
  77          {
  78   1          TR0 = 0;    //可以先关掉定时器
  79   1              flag = 1;   //扫描键盘允许标志
  80   1      //  keynum = KEY_num(0);    //建议在中断函数里不要放太多代码
  81   1              TH0 = (65536 - 10000) / 256;  //重新赋初值 10毫秒
  82   1          TL0 = (65536 - 10000) % 256;
  83   1              TR0 = 1;        //重新打开定时器
  84   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    188    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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