📄 acc1-2-1.lst
字号:
C51 COMPILER V7.09 ACC1_2_1 07/11/2005 11:26:37 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE ACC1_2_1
OBJECT MODULE PLACED IN acc1-2-1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE acc1-2-1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****************************************
2 文件名:ACC1-2-1.C
3 功能描述:定时100ms采样,采样结果直接送D/A输出
4 *****************************************/
5 #include <reg51.h>
6 #include <absacc.h>
7
8 /*****************************************
9 宏定义
10 *****************************************/
11 #define uchar unsigned char
12 #define uint unsigned int
13 #define ADC_7 XBYTE[0x7ff0] //定义模数转换IO地址
14 #define DAC_1 XBYTE[0x7ff2] //定义D/A第一路的IO地
15
16 /*****************************************
17 全局变量定义
18 *****************************************/
19 sbit str = P1^7;
20 uchar data ad[10]; //声明变量,用于存储转换结果
21 uint data time; //声明变量,用于定时
22 uchar data t0_h,t0_l; //用于存储定时器0的初值
23 uchar TK; //声明采样周期变量
24 uchar TC; //TK的变量
25
26 /*****************************************
27 主函数
28 *****************************************/
29 void main(void)
30 {
31 1
32 1 TMOD = 0x01;
33 1 time = 10; //定时1ms
34 1 t0_h = (65536-500*time)/256; //计算定时器0初值
35 1 t0_l = (65536-500*time)%256;
36 1 t0_l = t0_l+20; //修正因初值重装而引起的定时误差
37 1 TH0 = t0_h;
38 1 TL0 = t0_l;
39 1 IT1 = 1; //边沿触发中断
40 1 EX1 = 1; //开外部中断1
41 1 ET0 = 1; //开定时中断0
42 1 TR0 = 1; //启动定时器
43 1
44 1 TK = 10; //采样周期=TK×10ms
45 1 TC = 1;
46 1 DAC_1= 0x80; //D/A清零
47 1
48 1 EA = 1; //开总中断
49 1 while(1);
50 1 }
51
52 /**********************************************
53 函数名:INT1
54 功能 :1号外部中断服务程序
55 参数 :无*
C51 COMPILER V7.09 ACC1_2_1 07/11/2005 11:26:37 PAGE 2
56 返回值:无 *
57 ***********************************************/
58 void int1() interrupt 2 using 2
59 { uchar i;
60 1
61 1 TC--; //判采样周期到否
62 1 if(TC==0)
63 1 {
64 2 i = ADC_7; //读取A/D转换结果
65 2 DAC_1 =i; //送D/A输出
66 2 TC = TK; //采样周期变量恢复
67 2 }
68 1 }
69
70 /**********************************************
71 函数名:Timer0
72 功能 :定时器0中断服务程序
73 参数 :无
74 返回值:无
75 ***********************************************/
76 void Timer0() interrupt 1 using 1
77 {
78 1 str = !str; //产生A/D启动信号
79 1 TH0 = t0_h; //重新装入初值
80 1 TL0 = t0_l;
81 1 }
82
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 159 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 ----
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 + -