51单片机C语言,用中断定时控制P0端口,但不影响P1端口

就是说,P0,P1端口同时工作,而中断定时只控制P0,且P1不受该中断定时控制,程序应该怎么设计?

第1个回答  2012-05-02
1.初始化定时器
包括启动中断 启动定时器 开启全局终端 定时器初值 定时器工作模式
2.在中断函数中只对P0操作就行了
void T0_INT() interrupt
{
//重装初值
P0 = ~P0;
}追问

我这样试了,但是会影响P1,使P1的频率变了

第2个回答  2012-05-03
P0口用中断控制LED的闪灭的话,应该不会影响P1口的。是不是你进中断的时间太长了?中断程序越短越好。
第3个回答  2012-05-03
初始化设置的时候,就可以了追问

怎么设置,设置的时候我只设置了P0

第4个回答  2012-05-02
还是不太明白你的意思。。。。追问

就是P0端口控制八个LED闪灭,P1端口控制扬声器,P0我用的是定时中断,结果影响到了P1的频率

追答

中断时cpu在执行某个程序的时候,突然收到信号,要去处理执行其他程序,而把当前程序的运行状态压入堆栈中,就叫中断。定时器中断时候由定时器里面的数据溢出而引起的中断,P0我用的是定时中断,我还是不太明白你的意思的

51单片机c语言程序
unsigned char是8位但从0到255,unsignde int 16位从0到65535;楼主程序中的TH0\/TL0是8位uchar型;tmp是16位uint型。tmp=TL0|(TH0<<8);这句在执行时先进行类型转换,把TL0\/TH0暂时转换成16位uint型数据,(高位补0),再给TH0左移8位,和TL0相“或”,得到的是16位uint数据,赋给tmp....

我想问问关于51单片机I\/O口的问题!!
51单片机置1是输入状态,--也是输出状态,但是也可以输入。是呈现高阻态的,就是I\/O口内部结构的开关是断开的,不接地,--P0 口,确实是这样的。但还接一个上拉电阻吧!(都带上拉电阻)。--P0 口没有上拉电阻。--P1P2P3,都有上拉电阻。--但是电阻很大,几百K,上拉作用有限。那...

51单片机定时中断C语言的写法步骤,可追加分数
{ TOMD = 0X01;\/\/配置定时器0工作于方式一 TH1 = 0x3c; \/\/高八位装入初值 TL1 = 0xb0; \/\/低八位装入初值 IE = 0x82;\/\/开总中断并开定时器0中断 TR0 = 1;\/\/启动定时器0 while(1){ ;} } void Timer0_int() interrupt 1 {\/\/重新装初值 TH1 = 0x3c; ...

用keil51编译器编写的单片机C语言中断程序void Time0(void) interrupt...
1代表定时计数器0中断 2代表外中断1 3代表定时计数器1中断 4代表串行口中断 所以interrupt 1代表定时计数器产生中断后就转到这个函数里面执行 using 后面的数字是个工作寄存器的代号,也就是R0—R7。如果不写的话由系统自动分配,一般不用去理会 ...

用C语言编写51单片机三个开关控制八个LED灯的点亮,开关接P3端口,LED...
虽然编程51单片机。而且让每个LED灯都亮得非常好。这可太好了问题。这个技术应该有专门的负责人员来搞定。

51单片机C语言,求解IO口如何同时输出...
1、每一次调用移位子函数,数码管 变化子函数,子函数只做一次变化,即子函数只操作p0,p2口一次;2、变量放在子函数外;3、子函数中不要有延时,p0,p2口操作后使用;4、移位子函数是8次一轮回,数码管变化子函数是16次一轮回,所以“移位”2回“变化”一回;5、只要应用好调用与延时,就可有多...

用C语言给51单片机编程时,怎样用P0口输出地址和数据?
只要C语句能保证编译出MOVX指令即可。你可以自行学习以下关键字的用法:pdata,xdata PBYTE,XBYTE 点到为止。剩下的自己去琢磨,Keil里面都能搜索到的。

c51单片机 用了中断 再用定时器什么意思??有了中断干嘛还要用定时器...
而定时器 一般都是用查询模式的 可以当做时间继电器来用的 chaozi1125 | 发布于2011-09-24 举报| 评论 1 0 首先设置定时器工作方式,给计数器赋初值,然后开总中断,开定时\/计数器中断,启动定时器,然后你该干嘛干嘛,没嘛干就死循环等待中断。在中断里你想干嘛干嘛,但是不能有返回值。下面一C语言为例说明:...

51单片机中如何用C语言实现不同个灯同时进行不同频率的PWM呼吸?你现在...
在定时器中断函数中设置两个变量,其中一个每10毫秒翻转一次,另一个每50毫秒翻转一次;然后将这两个变量赋值给控制LED灯的两个I\/O口!

C语言51单片机中断嵌套问题
因为这是硬件决定的,软件做不到,即便你在高级中断A中关闭了中断B,但是因为你原来的中断B还没有执行完,所以,仍然要把没执行完的部分执行下去,才能返回到正常程序.对于ARM系列的可以,对于51来说,是不行的,因为51软件指令不允许修改PC寄存器的值 ...

相似回答
大家正在搜