如果是单纯输出方波的话就简单了.
程序如下:
//功能,按下P1_0的开关降低频率,按P1_1为升高频率
#define?uchar?unsigned?char?//替换简称
#define?uint?unsigned?int?//替换简称
uchar?sm;//定义临时变量
{
while(--ms);
}
void?T0_IRQ(void)?interrupt?TF0_VECTOR?//定时器0中断函数
TH0=sm;?//将变量赋予定时器0的高位
//寄存器初始化子函数
void?mcu_init()
ET0=1;//开定时器0中断
EA=1;?//开总中断
TH0=0xFF;//填充定时器高位
TR0=1;//开定时器0
sm=0xFF;//变量初始化
void?main()//主函数
mcu_init();//调用初始化函数
while(1)//主循环
if((!P1_0)||(!P1_1))?//检测是否有按键按下
if(!P1_0)//如果是P1_0按键按下
while(!P1_0);//等待按键放手
if(sm)//检测变量不为0
--sm;//自减1
else?if(!P1_1)//否则如果P1_1按键按下
while(!P1_1);//等待按键放手
if(sm0xFF)//检测变量小于0xFF
◆◆sm;?//自加1
用定时器写
以下是中断程序
void pwm_1() interrupt 1
P1^0=~P1^0;
大部分单片机都有pwm功能直接配置寄存器使能就可以输出对应的频率方波.
最好还是不要用延时函数
比较准确的方法是利用定时器
/*********定时器方波************/
/************机器周期1us********/
/*********方波周期1s*************/
int a; // 定义全局整形变量
void int() interrupt 1
a◆◆;
if(a == 1000)
"输出取反"
附上代码,讲解在后面:
public class Program
static void Main(string[] args)
range.Add(new Point { X = j, Y = i });
//移动方向的顺序
MoveDirection[] md = new[]
至于计数初值的计算,授之以鱼不如授之以渔!
自己算去吧!
void InitTimer0(void)//
TMOD = 0x01;
TH0 = 0x0FC; //计数器初值
EA = 1;
ET0 = 1;
TR0 = 1;//开启定时器T0
void main(void)
InitTimer0();
void Timer0Interrupt(void) interrupt 1
TH0 = 0x0FC;//重新赋初值
P1.0=~P1.0; //输出方波
以上就是土嘎嘎小编为大家整理的方波函数C语言表达式相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!