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

📄 serial.lst

📁 拼音输入法用在单片机上.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.23a  SERIAL                                                                08/24/2003 16:21:16 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE serial.c OPTIMIZE(6,SPEED) BROWSE ORDER DEBUG OBJECTEXTEND LISTINCLUDE TABS
                    -(8) 

stmt level    source

   1          //************************************************************************
   2          //文件原作者:"51单片机世界" 斑竹丁丁(聂小猛)
   3          //由液晶汉显模块demo程序修改而成。
   4          //*************************************************************************
   5          //本函数集来自“51单片机世界”,作者斑竹丁丁(聂小猛)。
   6          //主页地址http://www.mcu51.com
   7          //串口中断服务程序,仅需做简单调用即可完成串口输入输出的处理
   8          //出入均设有缓冲区,大小可任意设置。
   9          //可供使用的函数名:
  10          /*
  11          extern char getbyte(void);//从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
  12          extern putbyte(char c);//放入一个字节到发送缓冲区
  13          extern putstring(uchar  *puts);//发送一个定义在程序存储区的字符串到串口
  14          extern puthex(uchar c);//发送一个字节的hex码,分成两个字节发。
  15          extern  bit   inbufsign;
  16          #define CR putstring("\r\n")//发送一个回车换行
  17          extern void serial_init (void);
  18          */
  19          
  20          //*************************************************************************
  21          #pragma small
  22          #include <reg51.h>
   1      =1  /*--------------------------------------------------------------------------
   2      =1  REG51.H
   3      =1  
   4      =1  Header file for generic 80C51 and 80C31 microcontroller.
   5      =1  Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
   6      =1  All rights reserved.
   7      =1  --------------------------------------------------------------------------*/
   8      =1  
   9      =1  /*  BYTE Register  */
  10      =1  sfr P0   = 0x80;
  11      =1  sfr P1   = 0x90;
  12      =1  sfr P2   = 0xA0;
  13      =1  sfr P3   = 0xB0;
  14      =1  sfr PSW  = 0xD0;
  15      =1  sfr ACC  = 0xE0;
  16      =1  sfr B    = 0xF0;
  17      =1  sfr SP   = 0x81;
  18      =1  sfr DPL  = 0x82;
  19      =1  sfr DPH  = 0x83;
  20      =1  sfr PCON = 0x87;
  21      =1  sfr TCON = 0x88;
  22      =1  sfr TMOD = 0x89;
  23      =1  sfr TL0  = 0x8A;
  24      =1  sfr TL1  = 0x8B;
  25      =1  sfr TH0  = 0x8C;
  26      =1  sfr TH1  = 0x8D;
  27      =1  sfr IE   = 0xA8;
  28      =1  sfr IP   = 0xB8;
  29      =1  sfr SCON = 0x98;
  30      =1  sfr SBUF = 0x99;
  31      =1  
  32      =1  
C51 COMPILER V6.23a  SERIAL                                                                08/24/2003 16:21:16 PAGE 2   

  33      =1  /*  BIT Register  */
  34      =1  /*  PSW   */
  35      =1  sbit CY   = 0xD7;
  36      =1  sbit AC   = 0xD6;
  37      =1  sbit F0   = 0xD5;
  38      =1  sbit RS1  = 0xD4;
  39      =1  sbit RS0  = 0xD3;
  40      =1  sbit OV   = 0xD2;
  41      =1  sbit P    = 0xD0;
  42      =1  
  43      =1  /*  TCON  */
  44      =1  sbit TF1  = 0x8F;
  45      =1  sbit TR1  = 0x8E;
  46      =1  sbit TF0  = 0x8D;
  47      =1  sbit TR0  = 0x8C;
  48      =1  sbit IE1  = 0x8B;
  49      =1  sbit IT1  = 0x8A;
  50      =1  sbit IE0  = 0x89;
  51      =1  sbit IT0  = 0x88;
  52      =1  
  53      =1  /*  IE   */
  54      =1  sbit EA   = 0xAF;
  55      =1  sbit ES   = 0xAC;
  56      =1  sbit ET1  = 0xAB;
  57      =1  sbit EX1  = 0xAA;
  58      =1  sbit ET0  = 0xA9;
  59      =1  sbit EX0  = 0xA8;
  60      =1  
  61      =1  /*  IP   */ 
  62      =1  sbit PS   = 0xBC;
  63      =1  sbit PT1  = 0xBB;
  64      =1  sbit PX1  = 0xBA;
  65      =1  sbit PT0  = 0xB9;
  66      =1  sbit PX0  = 0xB8;
  67      =1  
  68      =1  /*  P3  */
  69      =1  sbit RD   = 0xB7;
  70      =1  sbit WR   = 0xB6;
  71      =1  sbit T1   = 0xB5;
  72      =1  sbit T0   = 0xB4;
  73      =1  sbit INT1 = 0xB3;
  74      =1  sbit INT0 = 0xB2;
  75      =1  sbit TXD  = 0xB1;
  76      =1  sbit RXD  = 0xB0;
  77      =1  
  78      =1  /*  SCON  */
  79      =1  sbit SM0  = 0x9F;
  80      =1  sbit SM1  = 0x9E;
  81      =1  sbit SM2  = 0x9D;
  82      =1  sbit REN  = 0x9C;
  83      =1  sbit TB8  = 0x9B;
  84      =1  sbit RB8  = 0x9A;
  85      =1  sbit TI   = 0x99;
  86      =1  sbit RI   = 0x98;
  23          //#include "w77e58.h"
  24          #define  uchar  unsigned char
  25          #define  uint   unsigned int
  26          
  27          #define  ILEN  36 //32                /* size of serial receiving buffer */
  28          idata    uchar inbuf[ILEN];
  29          data     uchar idata *inlast=inbuf;   //最后由中断进入接收缓冲区的字节位置
  30          data     uchar idata *getlast=inbuf;  //最后取走的字节位置
C51 COMPILER V6.23a  SERIAL                                                                08/24/2003 16:21:16 PAGE 3   

  31          bit      inbufsign;                   //接收缓冲区非空标志   有=1
  32          bit      inbufful;                    //输入缓冲区满标志  满=1
  33          //#define  CR putstring("\r\n")        //CR=回车换行
  34          
  35          //*****************************
  36          /*串口2接收一个字节数据
  37          uchar getchar(void)
  38          {
  39                  uchar c;
  40                  RI_1 = 0;
  41                  while(!RI_1);
  42                  c= SBUF1;
  43                  SBUF1 = c;
  44                  RI_1 = 0;
  45                  return c;
  46          }
  47          */
  48          /********************************************************************
  49          程序功能:扫描4*4小键盘得到key[4][4]中的一个字符                     *
  50          键盘安排:这是一个编辑输入的小键盘                                   *
  51          ┌┬──┐┌┬──┐┌┬──┐┌┬──┐                            *
  52          ││ 1  │┆│ 2  │┆│ 3  │┆│ 4  │                            *
  53          ││,.;?│┆│abc │┆│def │┆│ghi │                            *
  54          │└──┤┆└──┤┆└──┤┆└──┤                            *
  55          │    └────┴────┴────┴──┐                      *
  56          ├┬──┐├┬──┐├┬──┐├┬──┐    │                      *
  57          ││ 5  │┆│ 6  │┆│ 7  │┆│ 8  │    │                      *
  58          ││jkl │┆│mno │┆│pqrs│┆│tuv │    │                      *
  59          │└──┤┆└──┤┆└──┤┆└──┤  │                      *
  60          │     └────┴────┴────┴─┐│                      *
  61          ├┬──┐├┬──┐├┬──┐├┬──┐ ││                      *
  62          ││ 9  │┆│ 0  │┆│前移│┆│后移│  ││                      *
  63          ││WXYZ│┆│空格│┆│(英)│┆│(数)│  ││                      *
  64          │└──┤┆└──┤┆└──┤┆└──┤ ││                      *
  65          │     └────┴────┴────┴┐││                      *
  66          ├┬──┐├┬──┐├┬──┐├┬──┐│││                      *
  67          ││前页│┆│后页│┆│取消│┆│确定│││└─P1.0 行             *
  68          ││(拼)│┆│    │┆│ ← ┆││ ?  ││└──P1.1 行             *
  69          │└──┤┆└──┤┆└──┤┆└──┤└───P1.2 行             *
  70          │     └────┴────┴────┴────P1.3 行             *
  71          │      ┆      ┆      └────────P1.4 列             *
  72          │      │      └─────────────P1.5 列             *
  73          │      └──────────────────P1.6 列             *
  74          └───────────────────────P1.7 列             *
  75          行:      P1.0~P1.3                                                 *
  76          列:      P1.7~P1.4                                                 *
  77          扫描原理:  从P1.7到P1.4逐位清0,然后检测P1.0~P1.3那个被拉低         *
  78          参考例程:  51单片机世界->汉显液晶主页  http://www.hzlcd.com         *
  79                     斑竹丁丁 的 DEMO程序 并得到诸位大侠的指点而作成的        *

⌨️ 快捷键说明

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