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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
按下P55按键,将外部中断0计数值返回给上位机,现在外部中断0进入不了,不能计数,求教。. n% R' s  ]! C4 }9 V
! J* E  x0 \8 d# A! a7 X+ U: C7 U

: K9 Y* ?( D7 g2 H+ e#include "config.h"
. g% X  x" v; F$ O
#include "delay.h"6 Y& e! U; ]3 R6 S! @
#include "uart.h") n4 Z/ t3 k8 n. u& X  T
unsigned int INT0_cnt=0, INT1_cnt=0; //测试用的计数变量
1 z! a: M& `' b( @* Ysbit key=P5^5;
0 `# i  h7 e+ c; I0 U7 |/************* 功能说明 **************
  x9 \( S2 x1 p+ b
2 s$ `6 R. Q. i. y******************************************/
( A1 k) G& l1 t1 s" s/************* 本地常量声明 **************/, Y2 N* o; }* A! m0 L
% t% Z3 v) m, x7 I
/************* 本地变量声明 **************/
  H3 {3 ?; L. J4 |6 P1 e0 [3 }& P. K+ K- F
/************* 本地函数声明 **************/
1 q" X- N# e( Q  x* m4 D2 S- a! A+ x3 p- A- P  @
/*************  外部函数和变量声明 *****************/5 }: a$ A$ f. q( J
% |7 ]/ Q$ s+ @/ t- s0 I0 E% |
/******************** IO配置函数 **************************/* |3 D" v6 I9 [4 \
void GPIO_config(void)
, K  Z2 {" Y8 t9 i" d{. R3 L* R' t3 Y" K, O2 B8 |
P5M1 = 0x40;   //设置准双向口3 \6 O2 e' ~4 L: P* u
P5M0 = 0x00;" u. Q1 E$ M( J) c  m& ?* k
P0M1 = 0; P0M0 = 0; //设置为准双向口
' m- h. p+ x2 \P1M1 = 0; P1M0 = 0; //设置为准双向口. {0 G8 N5 v1 G7 @  _' y% g: u
P2M1 = 0; P2M0 = 0; //设置为准双向口9 B9 p# P; N9 e3 N/ j7 z
P3M1 = 0; P3M0 = 0; //设置为准双向口2 i* b: i7 F( h6 N& U3 ~
P4M1 = 0; P4M0 = 0; //设置为准双向口
$ q# ]# n5 m2 K. P/ DP5M1 = 0; P5M0 = 0; //设置为准双向口1 S0 \. C! b9 Z. L- I# M/ S! Y
P6M1 = 0; P6M0 = 0; //设置为准双向口, _% C; G; p/ [9 I
P7M1 = 0; P7M0 = 0; //设置为准双向口
, R3 i# y( \6 }, \, {; o; V! r}% J  g+ j3 E& W3 }7 a$ D
/******************** 主函数 **************************// s8 I6 `- Z0 s3 N
void main(void)
# F: }3 p7 `  T9 s+ F' L5 _* R{! @  ~- J) |* n  G1 \! v
int count = 0;6 g( s7 j4 o* A" i" [; Q5 @
GPIO_config();, N& A; ^& @3 z7 Y. j2 H7 Q
Uartinit();
) Z( j4 l9 J, ~! q+ e
& n6 R7 G# J1 G7 _/ UINT0_cnt = 0;
% w8 r' y8 j9 Y/ y# u) B$ \INT1_cnt = 0;- }5 t) u* @2 }$ k3 h  C
IE1  = 0; //外中断1标志位: Y8 v+ ]/ L1 @& Z
IE0  = 0; //外中断0标志位" o, z, O$ L+ @
EX1 = 1; //INT1 Enable  z$ ]! m1 K) a# G1 \
EX0 = 1; //INT0 Enable
5 t8 D9 p! g- p) l) E9 UIT0 = 1;  //INT0 下降沿中断  8 u+ H/ O/ `! m8 E, [3 a
// IT0 = 0;  //INT0 上升,下降沿中断
) d1 Z; g8 B: K3 |2 u" r2 v, pIT1 = 1;  //INT1 下降沿中断  & r5 F8 U2 g! |3 G3 v
// IT1 = 0;  //INT1 上升,下降沿中断
" r0 \6 t0 w1 h# i, t! YEA = 1;  //允许总中断5 ^1 X" N# X  _8 N& O) G
while(1)
, _. i$ _3 R7 M2 b7 l{
8 r6 k6 k' P0 E8 R6 J1 w( t2 M, A- I/ R- H: s1 o0 o) N
    1 i, r: F$ c$ n+ y$ F7 Z# p
   SendData(1+0x30);
* {& z$ w- s% v" H  3 [) H( b3 E- I; \- ?7 j
   IF(INT0_cnt >= 65536)2 p3 n/ J, D& G, M
    INT0_cnt = 0;' ?: _$ B9 C- |# l  J, B" n4 @
   if(key==0)2 t: j2 ]) x" E- a
   {
) n1 |' v+ J  t6 ^' o    delay_ms(10);
$ T: A  Y+ s1 b# ~* F    if(key==0)1 K" h, I- U9 J, {) I
    {4 _  c7 ?3 o! g4 K* B& ?+ i0 L
    0 X  }6 F) D% g/ s/ M' v' V$ i
     while(!key);( _0 F9 G9 ~3 Y+ L, G# X# j
     SendData(INT1_cnt/10000+0x30);
0 W: I! t6 x9 k     SendData(INT1_cnt%10000/1000+0x30);' \- m) Z( L0 J
     SendData(INT1_cnt%10000%1000/100+0x30);5 L) r1 P: u5 Q6 O. u& J2 [
     SendData(INT1_cnt%10000%1000%100/10+0x30);
8 ?6 t$ X- [' a  [7 d2 F# y     SendData(INT1_cnt%10+0x30);7 H1 \& W1 ]% F# o+ n  p/ F
     SendString("\r\n");
" u+ `& c# d7 l" u' }: [     INT1_cnt=0;' B- v4 P! D% S. C. r. C, Y
     
2 b2 F2 R" e% a5 O& G# v3 J- I    }
! C9 h; R1 D, O   8 v4 v- c* ~7 U4 ^
   }
4 J% t- P6 F9 O! v5 V9 f7 t   2 {. c+ J8 R3 M3 a/ {+ D
}; R! q% M5 ?# v6 j1 g" Q  ?
}
/ s+ J+ D' a2 C, }/ T/********************* INT0中断函数 *************************/' U% p: I# I! Z# ~, o
void INT0_int (void) interrupt 0  //进中断时已经清除标志
0 s# K+ d* A( j( }{& u) @$ S5 ?/ y8 G' }  O# P& E2 E9 D
EX0=0;
4 j1 x) w6 P7 P! v. A/ lINT0_cnt++; //中断+1
+ J7 D5 I$ T, Q) S% y5 mEX0=1;. C# T; y: N* E& |) D8 L* J4 I
}$ E7 S: m8 ?4 n" U2 B# o: ]
/********************* INT1中断函数 *************************/& `, O% R: o9 Q8 k$ t/ N
void INT1_int (void) interrupt 2 //进中断时已经清除标志
' R& _# k5 g$ R) _{
$ F# s2 m3 A- A( PEX1=0;6 o- T" B) z2 e# y
INT1_cnt++; //中断+1
6 l$ q* `2 U. n3 r- @}5 B2 L4 u1 h( @% p) N& f

- g3 k" Y8 ^2 d$ ]# D5 D" O. C/*********************************************************/5 }$ q; _0 o1 E% w+ ~2 Y! y
//#define MAIN_Fosc  22118400L //定义主时钟
$ g5 k- K2 R: V( w9 t, L" a2 D1 N' h! z//#define MAIN_Fosc  12000000L //定义主时钟
# ~: I8 R  M% L* g  i#define MAIN_Fosc  11059200L //定义主时钟
# n+ k5 f1 Y) s2 R) i//#define MAIN_Fosc   5529600L //定义主时钟/ m# C7 w6 B- H9 m4 I* m* s, B
//#define MAIN_Fosc  24000000L //定义主时钟
& q6 W% w! h& d) s# I( B* r4 T#define BaudRate1 9600UL0 e5 ?& K2 u3 O: g# q7 s( F: u* N
#define Timer2_Reload (65536UL-(MAIN_Fosc/4)/BaudRate1)$ k' W# J. @' R$ x
/*********************************************************/7 g: Z/ |( L- q' H* O% \
#include "uart.h"
% ?3 }! R2 K! U* ^8 b( K1 T6 Y7 Y6 T( }0 D
void UartInit(void)  [url=]//9600bps@11.0592MHz[/url]. V7 l5 h9 F$ {+ w5 C
{
* K4 Y/ F# h* b4 G3 q2 |3 XSCON = 0x50;                //8位可变波特率
- e. E. f4 ?6 O9 Y9 `: ^  vAUXR&=~(1<<4);  2 k9 E9 I' q( o% v. }2 \% M  K
AUXR|=0x10; . U7 S& ?0 i: U5 h& Z9 T: g
AUXR|=(1<<2);
& M# w5 i7 a. VT2H =(u8)(Timer2_Reload>>8);* L4 N% k# ^. w" T& W4 y! L  s, d
T2L=(u8)(Timer2_Reload);6 a9 F& Z4 h. G, k1 [. C1 I. I
AUXR|=(1<<4);  //启动9 Z2 l, t/ A- h  M: z% l# T
REN=1;
9 E2 ]/ P5 N+ Z3 V, s2 UES=1;EA=1;* r* H' T# S2 ]) u! B( S+ y" G- n
}
2 [8 S; C/ w& \1 j5 \" Z/ t# S/*----------------------------
0 U4 W& `2 V- L; b- h/ b! Q发送串口数据) B/ V; e+ ^3 W6 r! j( Y
----------------------------*/
) w) q) b$ N0 C( d+ U/ Svoid SendData(unsigned char ch): ]0 j5 P# G# z! n; T& S
{# |$ `( T# @- f/ S% V! g
     SBUF = ch;                 //写数据到UART数据寄存器
$ F* _- ?; P2 ^# }# F% Z; G  while(TI == 0);
6 L: Q2 ?0 x5 C+ v   TI = 0;  u6 b/ j' h+ S/ y) ?9 |
}
: o: `* K) |7 c3 a  v/*----------------------------
: I+ ~' a$ T/ @7 `发送字符串
8 t5 F: O3 b- g: Y8 p7 K5 C0 D----------------------------*/
. U! ?9 l' D9 l; A  Pvoid SendString(char *s)$ _2 b% D- e1 {! J( Z
{7 s$ T  b0 t# I4 n" T
     while (*s)                  //检测字符串结束标志. S( V+ x' e; t$ G4 S
    {
/ I: ^5 p) g4 ^1 V         SendData(*s++);         //发送当前字符
9 _, a. O$ ?' X    }
) x9 p) @; y. b3 Q; `& _' W5 t" N}
( Z: e+ M) }, }7 R5 T2 T1 W
  • 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-11-6 02:03 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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