?? max517c3.lst
字號:
C51 COMPILER V8.02 MAX517C3 08/11/2007 18:03:47 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAX517C3
OBJECT MODULE PLACED IN MAX517C3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAX517C3.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*************************************************************/
2 /* 這是MAX517 C51語言程序-不是調用匯編的,文件名為MAX517C3.C */
3 /* 功能:本程序是實現MAX517芯片的D/A轉換。程序中轉換的十六 */
4 /* 進制值依次為10H,20H,40H,80H,0FFH,00H, OUT腳輸出轉換后 */
5 /* 的模擬信號,它既可用萬用表的直流電壓檔測試,也可用示波器 */
6 /* 的探頭點在此處觀察。 */
7 /**************************************************************/
8 #include <reg52.h> // 引用標準庫的頭文件
9 #include <intrins.h>
10
11 #define uchar unsigned char
12 #define uint unsigned int
13
14 sbit SDA = P1^0; // MAX517串行數據
15 sbit SCL = P1^1; // MAX517串行時鐘
16 uchar i;
17
18 void delay(uint t) // 延時t毫秒
19 {
20 1 uint i;
21 1 while(t--)
22 1 {
23 2 for (i=0;i<125;i++) // 對于12M時鐘,約延時1ms
24 2 {}
25 2 }
26 1 }
27 void start(void) // 起始條件子程序
28 {
29 1 SDA = 1;
30 1 SCL = 1;
31 1 _nop_();
32 1 SDA = 0;
33 1 _nop_();
34 1 }
35 void stop(void) // 停止條件子程序
36 {
37 1 SDA = 0;
38 1 SCL = 1;
39 1 _nop_();
40 1 SDA = 1;
41 1 _nop_();
42 1 }
43 void ack(void) // 應答子程序
44 {
45 1 SDA = 0;
46 1 _nop_();
47 1 SCL = 1;
48 1 _nop_();
49 1 SCL = 0;
50 1 }
51 void send(uchar ch) // 發送數據子程序,ch為要發送的數據
52 {
53 1 uchar BitCounter = 8; //位數控制
54 1 uchar tmp; //中間變量控制
55 1 do
C51 COMPILER V8.02 MAX517C3 08/11/2007 18:03:47 PAGE 2
56 1 {
57 2 tmp = ch;
58 2 SCL = 0;
59 2 _nop_();
60 2 if ((tmp&0x80)==0x80)//如果最高位是1
61 2 SDA = 1;
62 2 else
63 2 SDA = 0;
64 2 SCL = 1;
65 2 tmp = ch<<1; //左移
66 2 ch = tmp;
67 2 BitCounter--;
68 2 }
69 1 while(BitCounter);
70 1 SCL = 0;
71 1 }
72 void DACOut(uchar ch) // 串行DA轉換子程序
73 {
74 1 start(); // 發送啟動信號
75 1 send(0x58); // 發送地址字節
76 1 ack();
77 1 send(0x00); // 發送命令字節
78 1 ack();
79 1 send(ch); // 發送數據字節
80 1 ack();
81 1 stop(); // 結束一次轉換
82 1 }
83 void main(void) // 主程序
84 {
85 1 SP=0xcf;
86 1 delay(2000);
87 1 i=0x10; // 對數字0x10作數模轉換
88 1 DACOut(i);
89 1 delay(2000); // 延時約2s
90 1 i=0x20; // 對數字0x20作數模轉換
91 1 DACOut(i);
92 1 delay(2000); // 延時約2s
93 1 i=0x40;
94 1 DACOut(i);
95 1 delay(2000);
96 1 i=0x80;
97 1 DACOut(i);
98 1 delay(2000);
99 1 i=0xff;
100 1 DACOut(i);
101 1 delay(2000);
102 1 i=0x00;
103 1 DACOut(i);
104 1 delay(2000);
105 1 while(1)
106 1 { // 對數字0~255進行數模轉換
107 2 for (i=0;i<=255;i++)
108 2 {
109 3 delay(1000); // 間隔約1s
110 3 DACOut(i); // 調用串行DA轉換子程序
111 3 }
112 2 delay(2000); // 延時2s
113 2 }
114 1 }
115
116
117
C51 COMPILER V8.02 MAX517C3 08/11/2007 18:03:47 PAGE 3
118
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 195 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
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 + -