1、利用8XX51单片机的T0计数,每计10个脉冲,P1.0变反一次,用查询和中断两种方式编程.
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 15:46:32
1、利用8XX51单片机的T0计数,每计10个脉冲,P1.0变反一次,用查询和中断两种方式编程.
2、已知8XX51单片机的系统时钟频率为6MHz,利用定时器T0,使P1.2每隔350us输出一个50us脉宽的正脉冲.
2、已知8XX51单片机的系统时钟频率为6MHz,利用定时器T0,使P1.2每隔350us输出一个50us脉宽的正脉冲.
自己写的.
第一题
查询法:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
void main()
{
uchar i;
IT0=0;
led=1;
while(1)
{
if(IE0==1)
{
IE0=0;//清除中断标志
i++;
if(i==10)
{
i=0;
led=!led;
}
}
}
}
中断法:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
void interrupt_init()
{
IT0=1;//设置外部中断0下降沿有效
EX0=1;//允许外部中断0有效时执行外部中断0的中断子函数
EA=1;//总中断允许
}
void EX_0() interrupt 0
{
static uchar i;
i++;
if(i==10)
{
i=0;
led=!led;
}
}
void main()
{
interrupt_init();
while(1);
}
第二题:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit output=P1^2;
bit NEGATE=1;
void timer_0()//定时器的初始化 6M晶振一个周期2us
{
TMOD=0x01;//用定时器0.工作在方式1.最大可以容纳65536
TH0=65510/256;// 25*2us=50us into interrupt1
TL0=65510%256;
ET0=1;//允许定时器0执行中断子函数
EA=1;//允许总中断
TR0=1;//打开定时器0
}
void time_0() interrupt 1
{
output=!output;
NEGATE=!NEGATE;
if(NEGATE)
{
TH0=65510/256; //25*2us=50us
TL0=(65510%256)+TL0;//提高精确度
}
else
{
TH0=65360/256; //175*2us=350us
TL0=(65535%256)+TL0;
}
}
void main()
{
timer_0();
output=1;
while(1);
}
第一题
查询法:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
void main()
{
uchar i;
IT0=0;
led=1;
while(1)
{
if(IE0==1)
{
IE0=0;//清除中断标志
i++;
if(i==10)
{
i=0;
led=!led;
}
}
}
}
中断法:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
void interrupt_init()
{
IT0=1;//设置外部中断0下降沿有效
EX0=1;//允许外部中断0有效时执行外部中断0的中断子函数
EA=1;//总中断允许
}
void EX_0() interrupt 0
{
static uchar i;
i++;
if(i==10)
{
i=0;
led=!led;
}
}
void main()
{
interrupt_init();
while(1);
}
第二题:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit output=P1^2;
bit NEGATE=1;
void timer_0()//定时器的初始化 6M晶振一个周期2us
{
TMOD=0x01;//用定时器0.工作在方式1.最大可以容纳65536
TH0=65510/256;// 25*2us=50us into interrupt1
TL0=65510%256;
ET0=1;//允许定时器0执行中断子函数
EA=1;//允许总中断
TR0=1;//打开定时器0
}
void time_0() interrupt 1
{
output=!output;
NEGATE=!NEGATE;
if(NEGATE)
{
TH0=65510/256; //25*2us=50us
TL0=(65510%256)+TL0;//提高精确度
}
else
{
TH0=65360/256; //175*2us=350us
TL0=(65535%256)+TL0;
}
}
void main()
{
timer_0();
output=1;
while(1);
}
1、利用8XX51单片机的T0计数,每计10个脉冲,P1.0变反一次,用查询和中断两种方式编程.
51计数器问题我打算用51的T0计数器计算脉冲数量,在P1口显示脉冲的数目从0开始计数,请教一下这个程序要怎么写.试了好
p1口接有8个发光二极管,编程使8个管轮流点亮,每个管亮100ms,采用定时器T0方式1,设晶振频率6MHz.用C语言
单片机中断程序P1=P1 | 0x80;
单片机定时器中断编程中这个,void timer0( ) interrupt 1,这里timer0( ) 为什么还要加个
单片机实验80C51 外中断 P1口接8个发光二极管,设计实验:S1加1键,S2减1键(INT0,INT1)
单片机外部中断实验 p1口接八个发光二极管,实现:s1加1键,s2减1键(INT0,INT1).要求:上灯全灭,8个发光
已知单片机晶振频率6MHZ,串口工作于方式1,波特率1200,允许中断方式接收,编程对串口进行初始化.
利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz.
用51单片机和C语言编程.利用矩阵键盘依次显示1,2,3,4,5.……12的平方,显示在数码管上.
MOV P1,单片机的,还有个MOV A,P1
密度为p1和p2的两种液体(p1