找回密码
 注册
关于网站域名变更的通知
查看: 505|回复: 1
打印 上一主题 下一主题

将外部中断0计数值返回给上位机,现在外部中断0进入不了,不能计数,求教。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-12-7 08:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
按下P55按键,将外部中断0计数值返回给上位机,现在外部中断0进入不了,不能计数,求教。
) J' \# t0 T' T  K3 P* [5 Y
, z2 M% C' b& G6 z- {2 j& k, C! R6 s% f2 q& f0 `: ?  w
#include "config.h"

2 ~) ?1 Z& N6 V5 D2 N#include "delay.h"
" L6 I( p% N( ]6 R#include "uart.h"4 n. @  P8 P& t; v6 a" l
unsigned int INT0_cnt=0, INT1_cnt=0; //测试用的计数变量* ^% Z) w! D7 Q% V, [
sbit key=P5^5;/ ^: A: ?8 o5 {# d& @; m
/************* 功能说明 **************
* C2 S& b8 ]% v1 N3 x& Q9 h
6 u, W5 h1 P9 W% }6 D3 F" ]******************************************/
8 R: A' y& H$ B+ p7 g/************* 本地常量声明 **************// j# x( N& V, S; v+ p1 \8 G' n0 O

* }- `) h  q) v+ s+ N$ t/************* 本地变量声明 **************/- ^0 L6 m* }! ?6 L+ e
2 f  b  W3 s3 q" i/ m
/************* 本地函数声明 **************/4 w/ f7 P3 d3 ~$ j$ g

' c" G# v* w  M. n3 G/*************  外部函数和变量声明 *****************/
% q: r- N1 [$ E) @9 s! u9 i: b9 [1 @5 J* z$ w7 |2 k" w
/******************** IO配置函数 **************************/
3 Y# @- s+ g/ p% r7 y3 {  rvoid GPIO_config(void)# u  {$ w8 m7 z
{' F: q. a$ r9 ~+ E5 N
P5M1 = 0x40;   //设置准双向口
1 X  g' ~) _9 @1 ?6 F" MP5M0 = 0x00;
& k( _; N1 G3 I( ]/ HP0M1 = 0; P0M0 = 0; //设置为准双向口' @0 F  Y. T7 n
P1M1 = 0; P1M0 = 0; //设置为准双向口
% N4 X; h4 f/ v& l4 a' cP2M1 = 0; P2M0 = 0; //设置为准双向口
: p' d0 o! M2 `$ \- }P3M1 = 0; P3M0 = 0; //设置为准双向口
! [; M8 X  V3 u, Q+ s8 [0 {* ?P4M1 = 0; P4M0 = 0; //设置为准双向口, p+ E; k! x# \1 E9 w
P5M1 = 0; P5M0 = 0; //设置为准双向口0 t0 A! _" }' `! o
P6M1 = 0; P6M0 = 0; //设置为准双向口
" s8 S- Q& c  k5 R6 d" }) |P7M1 = 0; P7M0 = 0; //设置为准双向口) G: z+ z3 Y2 h, @
}
+ V1 k# X/ G2 e  d# h/******************** 主函数 **************************/7 G, C# w# s% B2 h# Y
void main(void)
" Y3 M/ i0 P) l{/ ^2 b: ?: s1 @2 w$ }5 ~. y
int count = 0;# N3 w5 s' n) }. o
GPIO_config();
4 v4 g7 E1 u3 s5 t; pUartinit();
/ b' B8 w5 x) O7 m- c  V# ~& J: y: F0 d6 _7 t  q% [
INT0_cnt = 0;
/ k- V$ {4 C4 ]% G% B4 iINT1_cnt = 0;
; P; A, H* i3 \, C$ I2 b- }IE1  = 0; //外中断1标志位: s6 N8 p1 O$ r
IE0  = 0; //外中断0标志位
( C  I8 d( w. `! d' T6 yEX1 = 1; //INT1 Enable
" ^/ }% t! R+ H' d- zEX0 = 1; //INT0 Enable! Z9 k5 U! h& i. o8 E
IT0 = 1;  //INT0 下降沿中断  - {+ [. a. g6 n8 T
// IT0 = 0;  //INT0 上升,下降沿中断 6 {( @: N% Z8 e% w  b! o
IT1 = 1;  //INT1 下降沿中断  / l7 w7 |( S1 p+ ^) U
// IT1 = 0;  //INT1 上升,下降沿中断
& x- Z7 c- I  T$ ]. DEA = 1;  //允许总中断
* R: ^! Q# D) V1 @6 F5 vwhile(1)" U- Q8 U* S4 {: O
{3 e& N  k. v! _7 f4 Z7 `! i
: ]' x9 r) R3 a1 j# D" f% s
    ! O, a5 @: {0 ^( j% T
   SendData(1+0x30);
. z$ i9 b! u( ^  9 q3 h4 n: e2 z3 A2 L
   IF(INT0_cnt >= 65536)1 X4 v# Q  i/ U+ r2 X
    INT0_cnt = 0;/ D- q( F5 v9 W, Z2 {3 D
   if(key==0)
3 S( n2 Z' ]! D$ j+ P0 f2 N% ]   {; {+ f7 |2 i$ {/ O
    delay_ms(10);
' d6 Z' u! e4 M) v    if(key==0)* Y4 Y/ q. J! P$ [+ |- p
    {0 @! u! q3 b0 v) z; y( q
    : ?( J& `# [- v/ i5 d; w( Z
     while(!key);/ \3 V& d$ o& U# Q  K( ]+ H
     SendData(INT1_cnt/10000+0x30);2 l8 R/ A3 }8 t+ e' B( @6 k3 R/ q; G
     SendData(INT1_cnt%10000/1000+0x30);5 M5 g- S* l. S8 x+ |* j- i' W  O" B
     SendData(INT1_cnt%10000%1000/100+0x30);
* m# G. @2 i' P( q     SendData(INT1_cnt%10000%1000%100/10+0x30);
3 s0 R" ^8 Y& Q# w9 u- A     SendData(INT1_cnt%10+0x30);) s9 G( ^3 G6 j' a: U
     SendString("\r\n");
7 I' _, C( h1 V# ^1 Q     INT1_cnt=0;4 n; u. i# B& [, k5 f! {, O
     . d- r7 [5 ^4 ?2 _& q
    }
2 J6 J4 o# r2 Y5 E   0 K0 s& T; w! v4 x, ~
   }# b0 T( {/ ^/ r7 P9 K
     h' s8 `  I! s1 W7 Z9 m* S( D
}
3 e) P( v% ^2 f' ~; ^}5 I# l# X" k# B
/********************* INT0中断函数 *************************/
* p9 z$ [7 k- J) H' Ovoid INT0_int (void) interrupt 0  //进中断时已经清除标志
/ m6 `% V5 r/ `% M& [& {& _3 T  F{
; [6 Q+ c5 i# U$ M' SEX0=0;
  ~2 x2 ^% M" l4 C; j! cINT0_cnt++; //中断+1
: E/ l1 [2 \) h2 ]% rEX0=1;
. X0 k1 O( M! e8 b' J}/ r! ?8 B) J& A" |, }$ G* @0 h+ \
/********************* INT1中断函数 *************************/$ Y( k. o; T$ A( a9 ?1 a* P: e
void INT1_int (void) interrupt 2 //进中断时已经清除标志
# C; d& p- h+ U' I# r0 Z& h9 Y. K{
, P. k& C9 a! ]0 zEX1=0;$ Q+ u! c$ e! s3 r/ g
INT1_cnt++; //中断+1- i3 y. J9 i6 B2 o# G) T
}/ w2 o( B5 {, p# ~: T: u- K/ N

$ u  v, Z& h4 n3 t# |6 Z/*********************************************************/# z7 ]( x  \$ p, K# V
//#define MAIN_Fosc  22118400L //定义主时钟0 L! }# ~$ g  `4 q; `% @) ^  D
//#define MAIN_Fosc  12000000L //定义主时钟# ]9 G: n* I5 _
#define MAIN_Fosc  11059200L //定义主时钟' ^' P* P/ U  m( u
//#define MAIN_Fosc   5529600L //定义主时钟4 Q+ V$ {2 k' ~7 ^* [- N6 Z3 r6 B
//#define MAIN_Fosc  24000000L //定义主时钟
/ Z9 w+ }! B6 o* E6 W2 @1 w#define BaudRate1 9600UL& [" ~2 p  W8 p" ~
#define Timer2_Reload (65536UL-(MAIN_Fosc/4)/BaudRate1)) a( R- |# B& ]: e/ z7 ^
/*********************************************************/% g9 W! R: ]' x) F
#include "uart.h"
3 l0 m2 o% O( W1 \8 N9 `2 t
) q- U% I0 F8 }) i) D( r7 r5 Avoid UartInit(void)  [url=]//9600bps@11.0592MHz[/url]
% x" d% ^* P8 B9 k' {{/ w# p; o) O# m9 E
SCON = 0x50;                //8位可变波特率' ~/ c& T' z/ r8 d
AUXR&=~(1<<4);  & J( z0 F8 L0 r' ?0 P' c6 M
AUXR|=0x10; 3 H! J. C+ |9 b
AUXR|=(1<<2);0 ^- z. h9 A' j3 V2 N
T2H =(u8)(Timer2_Reload>>8);
1 f% i. P, G7 ]! o$ Z) nT2L=(u8)(Timer2_Reload);
* U: z: r# K' b: \" \AUXR|=(1<<4);  //启动
) `8 S! G: S  J/ gREN=1;/ \, x& x4 q. o  O3 l9 n0 D( @
ES=1;EA=1;
) \, i3 C  Q% \}8 `0 |: O5 u: K- `, j  H# Y1 ^0 p) k( s
/*----------------------------! _+ J% W5 J6 I* w* Y# x
发送串口数据
* e( J0 \% f( d; j2 L+ _* R----------------------------*/( k% \7 I1 {7 [2 F+ Y: {+ m6 T2 P
void SendData(unsigned char ch)
1 O0 _% p. r  y" p" o* z1 @6 Y{
( N+ d* L) x+ v) i     SBUF = ch;                 //写数据到UART数据寄存器- h3 a+ e1 H' e) B
  while(TI == 0);8 i. s$ R- K7 K( j" Y
   TI = 0;
5 p, h' s$ D. Q! m  v}7 }" j' }5 K( _1 q9 N+ L6 z
/*----------------------------7 k  |* }/ Q. \1 P; g7 ^  ^
发送字符串
+ c2 J% O8 {, h' U----------------------------*/
1 n( t" }# x: n3 Gvoid SendString(char *s)
9 v4 Q' Y; |1 T; ~) A; l, n{8 U* I6 u: \6 B
     while (*s)                  //检测字符串结束标志7 N' s) _. V9 P5 M2 u9 h; `
    {: d% ?  Z6 ?* J7 G- C6 S
         SendData(*s++);         //发送当前字符. X% I4 o+ D4 m+ }' ?; H+ I
    }
& d$ Q9 u+ z* T% s}
- y# j7 P) R% t7 |" C
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-4-20 09:45 | 只看该作者
    可以用STM32,这个资料多
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-7 05:49 , Processed in 0.140625 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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