导航:首页 > 操作系统 > 单片机方波程序

单片机方波程序

发布时间:2022-02-08 22:48:20

① 求高手 用51单片机输出产生方波的程序

#include"reg52.h"
sbit PWM=P1^0;//定义输出脚
void main()
{
TMOD=0x01; //定时器0工作方式1
TH0=(65536-10000)/256; //12M晶振10MS计时常数
TL0=(65536-10000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
while(1);

}
//中断函数,启动后每10MS进入一次中断
void T0_time(void) interrupt 1
{
TH0=(65536-10000)/256; //12M晶振10MS计时常数
TL0=(65536-10000)%256;
if(PWM)PWM=0; //输出脚取反
else PWM=1;
}

② 单片机方波

很明显这位大哥是想做一个频率计模式的东西嘛,想把测量出来的方波频率在数码管上显示出来。
首先肯定是要测量频率,然后就如同一楼大哥所说的那样,把数字用对应的查找表写在单片机中,一旦算出频率,对应查找表找出数字,显示在数码管上就行了,OVER,SO EASY!呵呵!

③ 编写51单片机程序,方波程序,at89s52的单片机

以下程序仿真成功,你试试看。

#include <reg52.h>
#define uchar unsigned char
#define TL_0SET (256 - 25)

sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;

sbit P1_6=P1^6;
sbit P1_7=P1^7;

bdata uchar x=0;
sbit p16=x^0;
sbit p17=x^1;
sbit flag=x^2;

uchar i, j;

void e0int() interrupt 0 //用外部中断0作控制开关,控制四选一数据选择器的输出
{
x++;
if(x == 4) x = 0;
P1_7 = p16;
P1_6 = p17;
}

void time0() interrupt 1
{
//T0定时25us,T0的中断服务程序
TL0 = TL_0SET + 8;//加8,是对程序做一个误差补偿,因为从进入定时中断,到执行中断里的第一句程序,是有时间间隔的,在此做一个误差补偿
i++;
P1 = i;
P1_7 = p16;
P1_6 = p17;
}

void main()
{
TR0 = 0;
TMOD = 0x02;
TL0 = TL_0SET;
TR0 = 1; //T0定时器开始工作
ET0 = 1;
EX0 = 1;//外部中断0允许
IT0 = 1;//外部中断0由下降沿触发
EA = 1;

P1_0 = 0;
P1_1 = 0;
P1_2 = 0;
P1_3 = 0;
flag = 0;

while(1) {;}
}

④ 单片机产生方波程序

50ms定时中断,计10次,即0.5s。每0.5s,P1.0求反一次,即为所要求的方波

⑤ 单片机汇编程序,生成方波

下面只附12M晶振的,波形口驱动口在P1.0,
6M的自己参照改吧,修改定时器配置寄存器和计数值。
ORG 0000H
LJMP START
ORG 000BH
LJMP Timer0Interrupt
START:
MOV SP,#60H
LCALL InitTimer0
LOOP:
;add your code here!
LJMP LOOP
InitTimer0:
MOV TMOD,#02H
MOV TH0,#00H
MOV TL0,#9CH ;100us中断初值
SETB EA
SETB ET0
SETB TR0
RET
Timer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
;========================
CPL P1.0
;========================
POP ACC
POP DPL
POP DPH
RETI
END

⑥ 解读下面程序(实现单片机输出方波的程序)

ORG 0000H //汇编伪指令,定义复位地址
RESET: LJMP MAIN //标号:长跳转到MAIN标号地址

ORG 000BH//汇编伪指令,定义定时器0中断服务地址
AJMP IT0P//跳转到定时器0中断服务程序

ORG OO1BH//汇编伪指令,定义定时器1中断服务地址
AJMP IT1P//跳转到定时器1中断服务程序

ORG 0100H//汇编伪指令,定义MAIN标号地址
MAIN: MOV SP, #60H//标号:堆栈初始化
ACALL PT0M2//调用PT0M2子程序

LOOP: MOV C, P1.1//标号:暂存P1.1状态
JNC LOOP //如果P1.1 不等于1跳转回标号LOOP
SETB TR1 //开定时器1
SETB ET1 //使能定时器1

HERE: AJMP HERE //Ljmp $ 死循环

PT0M2: MOV TMOD,#25 //标号PT0M2子程序
MOV TL0,#0FFH //定时器0赋初值
MOV TH0,#0FFH
SETB TR0 //开定时器0
SETB ET0 //使能定时器0
MOV TL1,#06H //定时器1赋初值
MOV TH1,#06H
CLR P1.1 //P1.1端口清零
SETB EA //使能全局中断
RET //子程序返回

IT0P: CLR TR0 //定时器0中断服务程序,关定时器0
SETB P1.1 //P1.1置位
RETI //中断返回

IT1P: CPL P1.0 //定时器1中断服务程序,P1.1清零
RETI //中断返回

⑦ 51单片机汇编程序编写方波输出程序

ORG 0000H
LJMP START
ORG 001BH
LJMP Timer1Interrupt

START:
MOV SP,#60H
LCALL InitTimer1

LOOP:
;主循环 添加其他代码
LJMP LOOP

InitTimer1:
MOV TMOD,#10H
MOV TH1,#9EH
MOV TL1,#58H
SETB EA
SETB ET1
SETB TR1
RET

Timer1Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH1,#9EH
MOV TL1,#58H

CPL P1.1//对P1.1进行取反

POP ACC
POP DPL
POP DPH
RETI

END

⑧ 单片机输出方波程序

单片机只能一个IO口输出PWM,如果要两个的话出来的PWM是不完整的。我有一个PWM输出,按键可调频率的程序,不知你要不要。

⑨ 〖急〗89c51单片机,编写方波的c语言程序

还是没太看懂,关于按键检测你可以这样编写
if(!key)//检测按键被按下
{
delay(2);//消抖
if(!key);//确认按键被按下
while(!key)//等待松手
{
//这里编写按键被长时间按下的函数
}
}

阅读全文

与单片机方波程序相关的资料

热点内容
炒黄金app哪个好用 浏览:991
恐惧症app哪个最好用 浏览:281
亿赛通加密软件好用吗 浏览:576
为什么光遇排队服务器忙 浏览:824
哪个app能把手p瘦 浏览:251
java中的date类型 浏览:429
面向程序员的范畴论 浏览:55
如何查询服务器所有电脑名 浏览:900
shell命令jar 浏览:301
有什么做手帐app 浏览:156
phpjquery源码 浏览:886
大话西游手游源码 浏览:655
javaudp代码 浏览:660
linuxu盘启动win7 浏览:990
如何启用交换机dhcp服务器 浏览:237
三田汽车压缩机好吗 浏览:294
马蜂窝app偏向什么客户 浏览:366
php简单的登录注册 浏览:554
我们接到上级命令 浏览:349
php本周星期一 浏览:65