中断进不去!帮忙解决下呗。
时间:10-02
整理:3721RD
点击:
- #include "STC12C5A60S2.H"
- #include "yxzs.h"
- void Delay1ms(unsigned int a);
- void gbled();
- void main(void)
- {
- TIMER0_Init(); // 初始化定时器0
- IT1 = 1;
- EX1 = 1;
- EA = 1;
- while(1)
- {
- }
- }
- void exint1() interrupt 2 using 1
- {
- unsigned int a = 0;
- while(a < 100)
- {
- P03 = ~P03;
- Delay1ms(50);
- a++;
- }
- gbled();
- }
- void gbled()
- {
- P03 = 1;
- }
- void Delay1ms(unsigned int a) //@22.1184MHz
- {
- while(--a != 0)
- {
- unsigned char i,j;
-
- i = 22;
- j = 128;
- do
- {
- while (--j);
- } while (--i);
- }
- }
/****************************************************************************/
这里开始是子函数
- #ifndef __YXZS_H__
- #define __YXZS_H__
- #define Fpclk 22118400
- #define TIMER0_RUN_HZ 1000 //每秒多少次进入定时器中断
- #define T0RELOAD (65536 - (Fpclk/TIMER0_RUN_HZ))
- sbit TEST_LED = P0^0;
- void Delay_Yxzs1ms(unsigned int a);
- void ISR_TIMER0(void) interrupt 1
- {
- // 重新装载定时器值
- TH0 = T0RELOAD / 256;
- TL0 = T0RELOAD % 256;
- // 以下添加用户程序
- TEST_LED = ~TEST_LED;
- Delay_Yxzs1ms(150);
- }
- void TIMER0_Init(void)
- {
- TMOD &= 0xf0;
- TMOD |= 0x01; // 16位计数器
- TH0 = T0RELOAD / 256;
- TL0 = T0RELOAD % 256;
- AUXR |= 0x80; // 计数器0时钟为Fosc,即1T
- PT0 = 1; // 定时器0优先级控制位, 1 为高优先级 0 为低优先级
- ET0 = 1; // 定时器0中断使能
- TR0 = 1; // 启动定时器
- EA = 1; // 开总中断
- }
- void Delay_Yxzs1ms(unsigned int a) //@22.1184MHz
- {
- while(--a != 0)
- {
- unsigned char i, j;
-
- i = 22;
- j = 128;
- do
- {
- while (--j);
- } while (--i);
- }
- }
- #endif
pt1?
还有好多看不懂啊,肯定还学其他的单片机
PT1不用管他,设置中断优先级的,现在是P0^0LED能正常闪烁,但外部中断1 给信号后,不处理中断服务程序。
看程序配置是下降沿中断,你是怎么给信号的?在哪个IO口给的?
P3^3,口接了一个轻触开关,用轻触开关触发。
中断用了2个using 1,造成冲突!
可能是未申明
是不是初始化有问题,单片机不熟悉