想P1_0输出方波,但示波器怎么调方波没反应?求教

keil中如何修改.h文件,我在reg51.h中编写一个sbitP10=P1^0;可是编译的时候还是提示错误,为什么?求教高手,谢谢。 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
keil中如何修改.h文件,我在reg51.h中编写一个sbitP10=P1^0;可是编译的时候还是提示错误,为什么?求教高手,谢谢。
12:50:10  
keil中如何修改.h文件,我在reg51.h中编写一个sbitP10=P1^0;可是编译的时候还是提示错误,为什么?求教高手,谢谢。
(27.74 KB, 下载次数: 4)
12:49 上传
没有包含头文件
12:50:11  
没有包含头文件
15:01:35  
這個 不用改 。h的文件的吧 直接给个定义不行吗& &或者自己再创一个.H的文件&&51的文件最好不要改&&改了以后&&你再做程序的时候& &p10都是sbit了 你的&&p10就不能用了
18:38:44  
看你的左侧工程里面没有把头文件包含进去正常的是我这样的
(19.23 KB, 下载次数: 3)
18:38 上传
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司用51单片机做信号发生器,同时输出四种频率的方波
//编写51单片机程序,输出方波。
//要求:晶振为12MHz,用T0做定时器,在P1的低四位输出四种频率的方波:
// P1.3 = 1.25kHz、P1.2 = 2.5kHz、P1.1 = 5kHz、P1.0 = 10kHz
//另外,上述四个频率要求用一个四选一数据选择器,再选出其中的一个输出出去。
//P1.6、P1.7的输出用来控制四选一数据选择器的选择位,它们由P3.0按键控制。
//悬赏分:10 - 解决时间: 10:45
//===================================================
//最佳答案:
//本题目早在一年前就回答完毕,现在增加了PROTEUS仿真图片发上博客。
//题目要求在相邻四条接口线输出的四种频率,恰有二倍的关系,这就可以利用一个定时中断来完成。
//题目还要求使用一个数据选择器,通过按键选择一个频率来输出。
//利用PROTEUS仿真的截图如下所示。
//图中在输出端接上了一个频率计和一个扬声器,进行频率检测。
//当按下按键时,输出频率可以轮番转换。
//图中把四种频率的检测结果都截图显示,可以看出,输出的频率十分理想。
//PC的扬声器也能听到声音,10kHz的频率,比较刺耳。
//以下程序已经仿真成功。
//---------------------------------------------------
#define uchar unsigned char
#define TL_0SET (256 - 50) //定时时间选为50us
//输出的方波周期将为100us, 10kHz
sbit P3_2 = P3^2; //用于按键
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;
//---------------------------------------------------
void e0int() interrupt 0 //外部中断0作开关,控制四选一数据选择器
while(P3_2 == 0) {;} //等待按键释放
if(x == 4) x = 0; //改变当前输出的选择
P1_7 = p16;
P1_6 = p17;
//---------------------------------------------------
void time0() interrupt 1 //T0的中断服务程序
{ //T0工作在方式2,自动装入初始值
j = i % 16; //取i的低四位
j += x && 6; //组合上数据选择器的控制信号
P1 = //输出四种频率的方波以及控制信号
//---------------------------------------------------
void main()
TMOD = 0x02; //T0定时方式2
TH0 = TL_0SET; //自装入式的定时初始值
TR0 = 1; //启动T0
IT0 = 1; //外部中断0由下降沿触发
EX0 = 1; //外部中断0允许
while(1) {;}
//---------------------------------------------------单片机 :采用定时中断,p1.0端口输出一个100MHz的连续方波信号!!!!!求大虾指点!!!_百度知道
单片机 :采用定时中断,p1.0端口输出一个100MHz的连续方波信号!!!!!求大虾指点!!!
我有更好的答案
单片机,要100MHz,还是用定时器中断来产生的,,,,,这个至少通常意义上的单片机是搞不定的了.要么你的定时器具有一个能将时钟倍频的部件,对这个倍频信号进行计时,但即使这样,你单片机里的CPU也响应不过来的,即使CPU能够以500MIPS的速度运行,也忙不过来的.除非你用上GHz主频的&单片机&,还有可能用定时中断来产生100MHz的连续方波信号.还是外置一个振荡器,用单片机来控制其是否允许输出吧,这样比较靠谱.
采纳率:56%
100MHz???开玩笑吧?你再确认一下。除非单片机上GHz运行,否则甭想用定时中断来输出100MHz的方波。
100MHz的连续方波信号,必须使用另外的信号发生器。单片机可以通过一个门电路,控制信号的传输通道。
普通51单片机的话,输出100MHZ的方波,实际上是达不到的,增强型的单片机我接触最高主频100MHZ的,也是实现不了的。可以选用ARM芯片,将FCLK映射到GPIO口上,不用定时器。
100KHz还可以
其他2条回答
为您推荐:
其他类似问题
方波信号的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。1、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管…【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:149,722贴子:
1、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管…收藏
1、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。。----------------------------------------------------------------------------------------------------------------------------------------------#include&reg52.h&sbit d1=P1^0;void main(){ TMOD=0x01; TH0=()/256; TL0=()%256; EA=1; ET0=1; TR0=1; while(1) {
}} void it0() interrupt 1{
a++; TH0=()/256; TL0=()%256; if(a==10)
d1=0; if(a==20) {
d1=1; } }不知道这题我这样理解对不对?
华芯微特单片机,SYNWIT微控制器凭借超强的性能,优化的连接性设计和高超的稳定性值得您的信赖.SYNWIT控制器让一切都变得不同.
#include&reg52.h&
//52单片机头文件 #include &intrins.h& //包含有左右循环移位子函数的库 #define uint unsigned int
//宏定义 #define uchar unsigned char
//宏定义 sbit P1_0=P1^0; void main()
//主函数 {
TMOD=0x01;//设置定时器0为工作方式1 TH0=()/256;
TL0=()%256; EA=1;//开总中断 ET0=1;//开定时器0中断
TR0=1;//启动定时器0 while(1);//等待中断产生 } void timer0() interrupt 1 {
TH0=()/256; TL0=()%256; tt++; if(tt==10)
P1_0=~P1_0;
} }这样好理解
感觉代码和汇编差不了多少
登录百度帐号已解决问题
利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz. 应该中断几次呢?
提问时间: 11:18:35
我算的是中断十次就够了,但是实验的时候要20次才能够达到1HZ闪烁。如下: #include&reg52.h& #define uint unsigned int #define uchar unsigned char sbit d1=P2^0; void main() { TR0=1; ET0=1; EA=1; TMOD=0x01; TL0=()/256; TH0=()%256; while(1) { if(a==20) { d1=~d1; a=0;
} } } void exter() interrupt 1 { TL0=()/256; TH0=()%256; a++; } 这是怎么回事呢??
浏览次数:4394
没有修改你的,我把以前做的一个给帖过来了,最后是显示图片。 #include #define&uchar&unsigned&char #define&uint&unsigned&int uchar&led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uint&Tcount=0,Ncount=0; //uint& void&delay(uchar&a) { &&uchar&i,j; &&for(i=0;i &&&&for(j=0;j&110;j++); } void&display(void) {& &&uchar&g,s,b,q,w,m; &&//Ncount= &&m=Ncount/100000; &&w=Ncount/10000%10; &&q=Ncount/1000%10; &&b=Ncount/100%10; &&s=Ncount/10%10; &&g=Ncount%10; &&//q=Ncount/1000; &&//b=Ncount%; &&//s=Ncount%; &&//g=Ncount%; && &&P2=0x01; &&P0=led[m]; &&delay(5); &&P2=0x02; &&P0=led[w]; &&delay(5); &&P2=0x04; &&P0=led[q]; &&delay(5); &&P2=0x08; &&P0=led[b]; &&delay(5); &&P2=0x10; &&P0=led[s]; &&delay(5); &&P2=0x20; &&P0=led[g]; &&delay(5); && &&//TR0=0;& &&//TR1=0;& } void&init() { &&//TMOD=0x61;&&&//定时器0,方式1;计数器1,方式2 && &&TMOD=0x25; &&//TH0=()/256;&//TH0=0x3C &&//TL0=()%256;&&//&TL0=0xB0&&定时50ms &&TH1=6; &&TL1=6; &&TH0=0; &&TL0=0; &&//TH1=0X00; &//&TL1=0X00; &&TR0=1; &&ET0=1; &&TR1=1; &&ET1=1; &&EA=1; } void&main(void) { &&P2=0; &&init(); &&while(1) &&{ &&&&display(); &&} } void&timer0(void)&interrupt&3 { && &&//TH0=()/256;&//TH0=0x3C &&//TL0=()%256;&&//&TL0=0xB0&&定时50ms &&Tcount++; &&if(Tcount==4000) &&{ && Tcount=0;
Ncount=TH0*256+TL0;
//Tcount=0; &&} } 。不要在中断程序里长时间等待,象while(g_TimeCnt
答案创立者
以企业身份回答&
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题

我要回帖

更多关于 示波器怎么调方波 的文章

 

随机推荐