单片机怎么跳出循环_如何用单片机产生一个三角波?

今天要学习的这个芯片叫做DAC0832技术流程我们不讲,就讲怎么用,学习单片机技术,我提倡如果看不懂,就先拿着用。

看一下如何接线:

359332ab0bbfc73d0cf00a7dfd9694c1.png

wr低电平有效,输入寄存器写选通信号

cs低电平有效, 输入寄存器选择信号

ILE 允许锁存信号,高电平有效

D0-D7 转换数据信号,也就是接在51单片机上接收数据。

XFER 数据传输信号,低电平有效。

Iout 电流输出引脚。

然后先看一下效果图:

7c74413683828efcaffba0517922cfba.png

然后代码送给大家:

#include "reg52.h" //头文件,包含51类单片机的头文件

#define uchar unsigned char //宏定义,把后面的长句子,定义为前面的短句子

#define uint unsigned int //宏定义,把后面的长句子,定义为前面的短句子

sbit cs=P3^7; //位操作定义,把3.7这个口,重新取个名字。叫CS

sbit wr=P3^6;//位操作定义,把3.6这个口,重新取个名字。叫wr

void delayms(uint xms) //延时子程序

{

uint i,j; //定义两个 无符号整形参数,

for(i=xms;i>0;i--) //循环XMS次

for(j=110;j>0;j--); //循环 xms*110

} //就是上面的循环一次,下面的循环110次,约为1毫秒。

void main() //主程序

{

uchar k= 0; //定义一个无符号数据 K=0,

cs=0; //输入寄存器选择信号 让他低电平。

wr=0;//输入寄存器写选通信号 也让他低电平 ,让他们都有效。

while(1) //判断为真,进行循环

{

while(1) //判断为真进行循环

{

P1= k++ ; //把k+1每次,送入P1口,

delayms(10);//延时10毫秒

if(k==0xff) //如果K+1不等于 256也就是FF,那么就会循环再次加一。

break; //如果等于256,就会退出,执行下一行。

}

while(1) //判断为真,进行循环。

{

P1= k-- ;// 把K-1每次,送到P1口。

delayms(10);//延时10毫秒

if(k==0x00) //如果K=0,那么就结束,如果不等于就继续循环去减一。

break; 如果等于0就退出。从主程序的开头继续运行程序。循环。

然后我们看一下仿真效果。

}

}

}

8205fb50d6ea7c86f084f34eb67faa19.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值