永发信息网

谁能帮我解释一下这个C51代码,尤其是void uart_init() #define DAC0832Addr 0x7fff

答案:1  悬赏:60  手机版
解决时间 2021-11-14 12:20
谁能帮我解释一下这个C51代码,尤其是void uart_init() #define DAC0832Addr 0x7fff
最佳答案
#include
#include
#define DAC0832Addr 0x7fff //这里定义了DAC0832Addr 就是0x7fff
#define uchar unsigned char
#define uint unsigned int
void uart_init(); //是子函数在main函数前申明(不申明,无法在主函数中调用),
void transformdata(uchar c0832data); //数据转换函数
void delay();
void main()
{
uchar cdigital=0;
uart_init();
delay();
while(1)
{
for(cdigital=0;cdigital<255;cdigital++)
{
delay();
transformdata(cdigital);
}
for(cdigital=255;cdigital>0;cdigital--)
{
delay();
transformdata(cdigital);
}
}
}
void transformdata(uchar c0832data)
{
*((uchar xdata*)DAC0832Addr)=c0832data; //这里用的指针,就相当于给该地址(x7fff )直接赋值(变量c0832data的值)
}
void uart_init() //这个子函数是设置寄存器
{
SCON=0x52; //串行控制
TMOD=0x21; //12MHz时钟时波特率为2400

TCON=0x69; //等于是TR1=1;TF0=1; IE1=1;IT0=1
TH1=0xf3; //定时器初值
}
void delay()
{
uint i;
for(i=0;i<250;i++);
}追问void uart_init() 函数在这个代码中是起什么作用的,还有*((uchar xdata*)DAC0832Addr)=c0832data给什么端口赋值????????????追答void uart_init() 函数是对特殊功能寄存器进行设置,每个寄存器的作用都写出了,
*((uchar xdata*)DAC0832Addr)=c0832data不是给端口赋值,那只是一个地址,地址可能是寄存器的地址,但这里的0x7FFF,明显不是寄存器了在数据存储器上面,而是在程序存储器上面。
给你讲下在集成开发环境下很多人的这个误区:例如P1=0;这个是对寄存器P1赋值0,你可以直接用P1是因为有编译器已经帮你把P1定义成了一个指向90H(P1对应的寄存器地址)的一个变量,大家写程序时可以直接用;所以你也可不用刚才那种方法,而是直接对90H 地址写入数据0。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
航天精密大厦家属院怎么样?好不好?值不值得
芳芳打字复印店地址有知道的么?有点事想过去
世界卫生组织的英文缩写是什么?
在一个暑假练成马甲线,目测体脂在25% 详细点
西昌离德昌有多远
跪求小月桐冈(桐冈さつき)的片子,最好全部,
爱情激情过后的平淡都有什么表现呢?
毛孔里的油脂粒(就是黑头)~对护肤品的吸收
3800 爱情数字是什么意思
喜欢浅驼色,浅卡其色人性格
6层的生日蛋糕多少钱一个?
想问下有没有人知道这样一本小说?
已知a为不超过一又二分之一的是正整数,b为不
江门市双水镇黄克竞博士学校地址在什么地方,
有一部电影,讲的是一个女儿寻找父亲的故事,
推荐资讯
qq三国四孔鞋开了孔的得多少钱
喝的水多了,老往厕所跑,怎么办
邮政储蓄银行atm机能查到钱币冠字号吗
一个房间里,想问哪个宾馆可以住四个人的,谢
激活Android Wear手表用哪个软件好? 看到有
今天瑞金民政局有没有上班
步步云鞋城这个地址在什么地方,我要处理点事
木瓜,紫薯怎么做好吃
吉林市江北新吉林到东北电立学院多少公理
我喜欢一个人,他却既经常跟我说话,又光明正
女款毛呢外套多少钱,女款毛呢外套怎么样
干香菇里面有虫子如何清除?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?