OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3893|回复: 11

关于定时器中断与12864

[复制链接]

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
发表于 2015-12-29 21:06:31 | 显示全部楼层 |阅读模式
小弟最近在做一个基于单片机的数控电源,今天在调试定时器中断时,出现了一个很奇怪的现象,希望有大神能解答一下
与其感慨路难行,不如马上出发
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
 楼主| 发表于 2015-12-29 21:08:11 | 显示全部楼层
在编写好定时器中断服务程序后,烧录。发现12864无法执行主程序中的显示程序。
与其感慨路难行,不如马上出发
回复 支持 反对

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
 楼主| 发表于 2015-12-29 21:08:35 | 显示全部楼层
void timer0() interrupt 1
{
TR0=0;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
if(S2==0)
{
   out =10*(out+0.1);
   iout =out;
   outs=iout/10;
   outg=iout%10;
   write_com(0x82);
   write_date(0x20);
   write_date(0x30+outs);
   write_date(0x2e);
   write_date(0x30+outg);

}
else if(S3==0)
{
   out =10*(out-0.1);
   iout =out;
   outs=iout/10;
   outg=iout%10;
   write_com(0x82);
   write_date(0x20);
   write_date(0x30+outs);
   write_date(0x2e);
   write_date(0x30+outg);

}
TR0 =1;
}
与其感慨路难行,不如马上出发
回复 支持 反对

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
 楼主| 发表于 2015-12-29 21:09:28 | 显示全部楼层
但是,我感觉就算中断服务程序有问题,也不至于影响到主程序的代码执行
与其感慨路难行,不如马上出发
回复 支持 反对

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
 楼主| 发表于 2015-12-29 21:10:01 | 显示全部楼层
void main()
{
uint i=0;
EA = 1;//开启总中断
TMOD=0x11;
EX0 = 1; //开启外部中断0
//ET0= 1;  //开启定时器中断0
//TR0=1;
EX1=1;
//ET1=1;         //开启定时器中断1
//TR1=1;
IT0 = 1;  //下降沿触发
IT1=1;
//TH1=(65535-50000)/256;
//TL1=(65535-50000)%256;
//TH0=(65536-46080)/256;
//TL0=(65536-46080)%256;
lcd_init();
welcome_s();
while(1)
{
}

}
与其感慨路难行,不如马上出发
回复 支持 反对

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
 楼主| 发表于 2015-12-29 21:10:43 | 显示全部楼层
在注释掉上面的代码后,12864又能正常显示
与其感慨路难行,不如马上出发
回复 支持 反对

使用道具 举报

10

主题

560

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1739
金钱
1739
注册时间
2014-6-27
在线时间
943 小时
发表于 2015-12-29 21:13:58 | 显示全部楼层
你把定时器里面有S2,S3判断的代码屏蔽,可以看得出些大概了。
回复 支持 反对

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
 楼主| 发表于 2015-12-29 21:17:05 | 显示全部楼层
大约,在烧录程序后1min,LCD会显示welcom_s()的内容,为什么会这样
与其感慨路难行,不如马上出发
回复 支持 反对

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
 楼主| 发表于 2015-12-29 21:18:57 | 显示全部楼层
同时,外部中断0都无法触发,或者是,外部中断0的服务程序中送到LCD显示的内容,12864没有显示,还不确定是否触发外部中断0
与其感慨路难行,不如马上出发
回复 支持 反对

使用道具 举报

10

主题

560

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1739
金钱
1739
注册时间
2014-6-27
在线时间
943 小时
发表于 2015-12-29 21:22:26 | 显示全部楼层
你先单独测试定时器,在定时器中断里面取反LED,测试好了,再测外中断。
回复 支持 反对

使用道具 举报

34

主题

283

帖子

0

精华

高级会员

Rank: 4

积分
739
金钱
739
注册时间
2015-11-15
在线时间
226 小时
 楼主| 发表于 2015-12-29 21:32:01 | 显示全部楼层
我在关闭了定时器中断1之后恢复正常,因为还没有来的级编写定时器中断1的中断服务函数,可能是这个原因么
与其感慨路难行,不如马上出发
回复 支持 反对

使用道具 举报

10

主题

560

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1739
金钱
1739
注册时间
2014-6-27
在线时间
943 小时
发表于 2015-12-29 21:33:37 | 显示全部楼层
当然,开了中断,就必须有中断函数,否则一旦有中断就死掉了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表