📄 ex8-3.c
字号:
#include <reg51.h> //外接芯片来实现外围电机的选择
#include <stdio.h>
#define DAC0832Addr0 0XFEFF //0832地址1
#define DAC0832Addr1 0XFFFF //0832地址2
#define DAC0832Addr 0X7FFF //0832地址
#define uchar unsigned char //单个字节无符号数
#define uint unsigned int // 输出口初始化
void TransformData1 ( uint DAC0832,uchar c0832data1)//转换数据
{
*((uchar xdata *)DAC0832)=c0832data1; //向0832输出待转换数字量c0832data
/* 在C语言中 访问外部寄存器时要先进行类型转换。用(uchar xdata *)转化位指针型数据,再间接寻址*/
}
void Delay ()
{
uint i;
for (i=0; i<200;i++);
}
main ()
{
uchar cDigtial;
P0=0xff; //端口初始化,其实不用 上电后自动置高
P1=0xff; //端口初始化,其实不用 上电后自动置高
P2=0xff; //端口初始化,其实不用 上电后自动置高
P3=0xff; //端口初始化,其实不用 上电后自动置高
Delay();
P1=0x00;
cDigtial=P1;
for(;cDigtial<=3;cDigtial++) //循环给四个电机输入相同的值
{
P1=cDigtial; //必须重新赋值给P1口
TransformData1(0X7FFF ,0X50); //进行数模转换
Delay () ;
}
} //可以用一个函数来实现数模的转换,关键事把参数改成UINT才可以,不然选通不了。0X7FFF为2字节..
/* for(;cDigtial<=3;cDigtial++) //循环给电机输入不同的值
{
if (cDigtial==0)
{
P1=cDigtial; //必须重新赋值给P1口
TransformData1(0X7FFF ,0X50); //进行数模转换
Delay () ;
}
if(cDigtial==1)
{
P1=cDigtial ;
TransformData1(0X7FFF ,0X80); //进行数模转换
Delay () ;
}
if(cDigtial==2)
{
P1=cDigtial ; //必须重新赋值给P1口
TransformData1(0X7FFF ,0XD0); //进行数模转换
Delay () ;
}
if(cDigtial==3)
{
P1=cDigtial ;
TransformData1(0X7FFF ,0XE0); //进行数模转换
Delay () ;
}
// printf("increment\n") ; //调试输出信息
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -