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

📄 kenshin.lst

📁 用C编写的信号发生器的单片机程序,主要功能是能够接收计算机串口发送的消息,然后根据发送过来的数据来修改信号发生器的输出频率和相位
💻 LST
字号:
C51 COMPILER V8.02   KENSHIN                                                               05/06/2007 10:07:58 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE KENSHIN
OBJECT MODULE PLACED IN F:\信号发~1\PROGRAM\KENSHIN.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE F:\信号发~1\PROGRAM\KENSHIN.C DB SB OE

line level    source

   1          #include <reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          sbit fud=P2^1;           //加载AD9851的外部寄存器到内部寄存器的操作引脚
   5          sbit clk=P2^0;           //读取并口上的数据到外部寄存器的操作引脚
   6          sbit res=P2^2;           //AD9851的重启引脚
   7          sbit max=P2^3;           //MAX485的半双工控制引脚
   8          
   9          
  10          uchar W[5];              //AD9851控制字存储叔祖
  11          uchar temp;              //临时变量
  12          uchar p;                 
  13          uchar i;
  14          
  15          
  16          void TransData(void)     //数据传输函数
  17          {  
  18   1          max=1;               //将MAX485工作方式设定为发送
  19   1          SBUF='R';            //向PC机发送R,表示数据接收完全
  20   1          while(!TI);          //等待发送完毕
  21   1          TI=0;                //清除发送中断标志
  22   1          max=0;               //将MAX485工作方式设定为发接收
  23   1          for(i=0;i<5;i++)     //传数据
  24   1          {
  25   2              P1=W[i];         //P1口引脚输出等于W[i]
  26   2              clk=1;           //W_CLK上升沿将AD9851并口上的数据读进内部寄存器
  27   2              clk=0;
  28   2          }
  29   1          fud=1;               //5个控制字发送完后,在FQ_UD上升沿将数据加载
  30   1          fud=0;               //到内部寄存器,并改变输出
  31   1      }
  32          
  33          void Init_serial()       //初始化串口函数
  34          {
  35   1         TMOD=0x20;            //定时器1置为方式2
  36   1         TL1=0xfd;             //装载定时器初值,设置波特率为9600
  37   1         TH1=0xfd;
  38   1         SCON=0x50;            //设定串口工作方式1
  39   1         PCON=0x00;            //不使用波特率倍增
  40   1         TR1=1;                //启动定时器
  41   1         EA=1;                 //开总中断
  42   1         ES=1;                 //开串行口中断
  43   1         max=0;                //MAX485工作方式设定为读
  44   1      }
  45          
  46          void main()              //main函数
  47          {
  48   1        clk=0;                 //初始化
  49   1        fud=0;
  50   1        res=1;                 //RESET AD9851
  51   1        res=0;
  52   1        Init_serial();         //调用串口初始化函数
  53   1        W[0]=0x01;             //启用AD9851的6倍频功能
  54   1        p=1;
  55   1        while(1);              //等待中断
C51 COMPILER V8.02   KENSHIN                                                               05/06/2007 10:07:58 PAGE 2   

  56   1          
  57   1      }
  58           
  59          void Serial_RI(void) interrupt 4  using 3  //中断程序
  60          {
  61   1         ES=0;                 //关串行口中断
  62   1         if(RI==1)             //如果是接收中断,执行下面函数
  63   1         {
  64   2            RI=0;              //清除中断标志位
  65   2            temp=SBUF;         //读取接收寄存器
  66   2            W[p]=temp;         //设定控制字
  67   2            max=1;             //MAX485设定为发送
  68   2            SBUF=temp;         //将接收到的字节再发送回PC,检验是否接收正确
  69   2            while(!TI);        //等待发送完毕
  70   2            TI=0;              //清除发送中断标志
  71   2            max=0;             //MAX485设定为接收
  72   2            p++;               //p自加
  73   2            if(p==5)           //当p=5时,表示接收完成,向AD9851发送数据
  74   2            {  
  75   3               TransData();    //调用数据发送函数
  76   3               p=1;            //将P重新设定为1
  77   3            }
  78   2         }   
  79   1         ES=1;                 //开串行口中断
  80   1      }
C51 COMPILER V8.02   KENSHIN                                                               05/06/2007 10:07:58 PAGE 3   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
TransData. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
SBUF . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0099H  1
PCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0087H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
temp . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
clk. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A0H  1
fud. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A1H  1
max. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A3H  1
res. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A2H  1
TH1. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008DH  1
TL1. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008BH  1
W. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0001H  5
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
Serial_RI. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
i. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0006H  1
p. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0007H  1
Init_serial. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    138    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   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 + -