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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
按下P55按键,将外部中断0计数值返回给上位机,现在外部中断0进入不了,不能计数,求教。: [# {5 b( e: v3 z. v

  Y; V2 F7 V$ r- Q7 I0 }4 o
0 i- p# A8 q4 s#include "config.h"

/ |  A- E. Y( ~) Y#include "delay.h"
: p: v  U! [& R- |; B#include "uart.h"' G6 Z, a8 b: P9 o
unsigned int INT0_cnt=0, INT1_cnt=0; //测试用的计数变量$ j2 P  Z/ T" S, U2 x1 M& Z
sbit key=P5^5;
7 w2 Q3 \' U6 }+ d" \, A1 N5 J/************* 功能说明 **************% E: J6 z5 J9 n/ |7 k

0 J5 m* |6 [1 W0 d******************************************/2 x$ Y- T. o" S
/************* 本地常量声明 **************/
1 U8 o; M) P! G* V( G1 v: K! V, P. I: O
/************* 本地变量声明 **************/" z, y; s# J0 G4 l& K

. r9 J" z- r, M1 J/************* 本地函数声明 **************/
* |  q7 L. F/ `) Q* u. ~0 A' w& o! E9 `! H# T" x3 d: L" j
/*************  外部函数和变量声明 *****************/
- \0 {' H: d4 ?1 c8 g0 i" J2 f- @, _% `; m. E
/******************** IO配置函数 **************************/6 A8 N# T7 b+ d
void GPIO_config(void)# j  P* z  H, ]1 Y7 F7 c; v  _
{$ ~% f6 x  K( ?, r6 ?
P5M1 = 0x40;   //设置准双向口* Y5 @! f' X+ d( `9 K/ v
P5M0 = 0x00;$ c  V, P+ x4 n# {2 m5 T& ?5 x
P0M1 = 0; P0M0 = 0; //设置为准双向口
- i% `( E  a5 |- XP1M1 = 0; P1M0 = 0; //设置为准双向口- l8 t& w( _1 V/ Y+ m
P2M1 = 0; P2M0 = 0; //设置为准双向口$ \& ^# `# I% H6 `8 ^4 T7 Z4 g
P3M1 = 0; P3M0 = 0; //设置为准双向口8 K, K& H! \% M% k) o
P4M1 = 0; P4M0 = 0; //设置为准双向口
( Z  Y! p' y! [- l# l% q! x9 gP5M1 = 0; P5M0 = 0; //设置为准双向口
7 k+ k: ~# {( q" K( U8 A  C" rP6M1 = 0; P6M0 = 0; //设置为准双向口
! F% S9 P4 K' ~' \: t7 yP7M1 = 0; P7M0 = 0; //设置为准双向口1 ^) v0 f+ V/ v) P
}) D& z+ r" P$ c" F
/******************** 主函数 **************************/- C% p4 K% b- e3 Q
void main(void)7 {+ n0 t4 j- i3 I5 `0 i
{) ]0 H9 T2 n* W/ u
int count = 0;
" d  ^6 c& d  lGPIO_config();
0 l* y8 ~" K% H" N9 Z* _" `" r* y% i: NUartinit();
0 G: J: t+ A2 `8 ?8 X  [8 `8 i2 B* k3 m0 |8 o
INT0_cnt = 0;8 P& \3 ]2 Y5 t% i" W/ x
INT1_cnt = 0;
* `( L9 F3 I* g8 {2 xIE1  = 0; //外中断1标志位. E" Q4 P4 Q1 U( q
IE0  = 0; //外中断0标志位0 c3 S+ T' }- \8 e% n; W8 v5 L2 P
EX1 = 1; //INT1 Enable1 p( ^/ s, C9 f' Z8 G( d
EX0 = 1; //INT0 Enable
* g7 \* x$ A& b& N# h5 b1 KIT0 = 1;  //INT0 下降沿中断  5 q' k8 s  h" E+ t  u. o  w2 m
// IT0 = 0;  //INT0 上升,下降沿中断
2 n" G2 E6 s; EIT1 = 1;  //INT1 下降沿中断  
9 y3 Z5 [4 d( v4 r& A5 a1 |// IT1 = 0;  //INT1 上升,下降沿中断 " g. C& g  |" V- n
EA = 1;  //允许总中断( s9 d7 n& N4 o/ r6 x; S+ t  s4 V
while(1)
- W/ L# L" R# r$ ]1 F{
7 q: G3 i5 Z; ]$ b0 J' a+ f: n* m  s; V% |) g
    $ Z3 J7 d: q$ F! e9 X3 c' U- N! I
   SendData(1+0x30);6 q; b5 O, k& `& a: a
  
: w6 N) e5 `" V8 r7 v! b   IF(INT0_cnt >= 65536)
. ]0 q( A5 q/ P    INT0_cnt = 0;1 O  p: D5 ?, E* \3 A+ @1 K2 l
   if(key==0)( ]2 p9 b! c6 _) p$ ]0 F
   {3 \8 T# m( ]5 ^! Z
    delay_ms(10);
8 V! ]& S4 ^3 Q2 i& J5 ^, ]- T    if(key==0)
3 W5 f. q) W) t; v2 m    {" q) z+ c, W! q, @5 A+ B
    5 ?* h/ l6 Z& d8 S3 i! v- E
     while(!key);
2 n+ E8 F' v  h; \; a     SendData(INT1_cnt/10000+0x30);
  _/ {1 U0 j4 W( h" _  x3 l* f     SendData(INT1_cnt%10000/1000+0x30);
' E6 |% e& _4 B# R! x* P     SendData(INT1_cnt%10000%1000/100+0x30);
2 F+ G9 R) @4 C8 x+ o" e6 {     SendData(INT1_cnt%10000%1000%100/10+0x30);
9 p; {  M2 y0 e( U2 L     SendData(INT1_cnt%10+0x30);
1 j- z) w# b2 b: B9 p     SendString("\r\n");+ |, _5 E3 K4 [( Z6 L8 s) N
     INT1_cnt=0;
5 H. z, x7 w! u2 |- u     + ?8 @$ N/ u& ]1 n
    }
8 }& Z, a  Z" g0 ?3 }# H   3 t- U' ]: O* d' G1 I* J$ X) L
   }
9 q& D* [' b) a6 E  ~   9 D- _' K' w0 D3 T8 G
}
; Y' M1 p6 Y; S}
+ ]& k$ ?3 l7 `0 o/********************* INT0中断函数 *************************/6 G+ @/ p/ _5 i0 H$ [
void INT0_int (void) interrupt 0  //进中断时已经清除标志
' i' u" T1 J; k; B{$ \$ v& V  x, v; u
EX0=0;
! ]2 Y! _5 k& P5 [& A5 AINT0_cnt++; //中断+1
+ {2 T* g; j- D( f7 ~1 f0 uEX0=1;
6 \1 y8 c* V, l$ _0 }}
- }# u+ L1 w8 r/********************* INT1中断函数 *************************/
8 Z! B3 p* I; v* }void INT1_int (void) interrupt 2 //进中断时已经清除标志: x2 t! m! _0 I& Z
{
) }4 ^% D. }, x3 ?+ e2 [EX1=0;8 o* V6 u* Y4 F4 o/ V: n0 |" I; a
INT1_cnt++; //中断+18 i6 h+ P' ^" c: u6 e
}
* A* Y% r& Y- J4 X8 Q: Y* X3 N3 A- T1 G
/*********************************************************/
+ S8 }; D/ V* D//#define MAIN_Fosc  22118400L //定义主时钟; P3 K  R9 G$ k& O7 E
//#define MAIN_Fosc  12000000L //定义主时钟
: X5 ~9 ^$ Y  C+ @#define MAIN_Fosc  11059200L //定义主时钟- x9 O+ |) W  R( i' u
//#define MAIN_Fosc   5529600L //定义主时钟7 N! q8 T- a/ z5 J; R4 G8 [
//#define MAIN_Fosc  24000000L //定义主时钟7 _7 N) C; I$ c# O+ K  J
#define BaudRate1 9600UL4 h! O) b  f, M( H$ Q: X, H
#define Timer2_Reload (65536UL-(MAIN_Fosc/4)/BaudRate1)
6 D2 i- X  T1 d; d1 T/*********************************************************/* ^$ \* c5 q/ n: I6 u+ K/ L! H
#include "uart.h"
& S, N% v9 E# e, }: n+ g  O) Z( q+ X- O" e) J; |
void UartInit(void)  [url=]//9600bps@11.0592MHz[/url]3 A2 D/ L5 }) t! q5 A5 J  T3 c4 L, Y
{, Z! A! [) V2 {4 [7 V" e' U6 g3 d2 i
SCON = 0x50;                //8位可变波特率5 M+ y# W1 O( B
AUXR&=~(1<<4);  
7 f+ Z7 x& F6 U* n1 \0 MAUXR|=0x10;
6 S0 x1 ^9 v. P5 _AUXR|=(1<<2);& {6 e- g5 f9 y) k
T2H =(u8)(Timer2_Reload>>8);& {: A/ y' C6 V1 P( k6 f1 R8 F
T2L=(u8)(Timer2_Reload);) p+ [7 g& E& s6 c* E" S5 P. j' {
AUXR|=(1<<4);  //启动
; u2 O2 a7 r6 [7 m4 x9 qREN=1;/ L: ?4 R$ r" k2 }8 |1 R( k# e
ES=1;EA=1;8 f9 J$ _* h. H2 E* y
}+ M, p2 \" m2 p- V, Q% z
/*----------------------------5 m4 ^' W9 o. ]3 G6 e* |/ s
发送串口数据6 `3 `  W7 W7 W! I$ ~
----------------------------*/
5 g# T: O' m9 ?void SendData(unsigned char ch)# |8 w5 ~; o, s
{
9 J  t1 ?4 V* v8 ~! U- Q9 X     SBUF = ch;                 //写数据到UART数据寄存器" }, x+ O1 I6 Q& T) q2 D
  while(TI == 0);5 a" V4 K( a  O: N' E7 p! a
   TI = 0;
5 A4 K6 S: X* X1 {( @1 |}
; q0 d9 n) x9 F/*----------------------------& Q9 G) c8 w7 J0 c. B# L5 N' y
发送字符串
' W# F9 n  E7 H9 q# B" _( [----------------------------*/
8 b* I# U( ^( m1 h, rvoid SendString(char *s)3 F* f+ N+ q0 i7 h$ n
{1 {5 T+ B; [8 U  o
     while (*s)                  //检测字符串结束标志
. y4 U1 {. L' l/ Q4 I    {+ R2 ]- D2 l8 F" w. q$ s2 d6 n
         SendData(*s++);         //发送当前字符, ]6 i; O( ^; _$ _- y! H- d
    }
. N/ [* V1 n0 m, W0 B$ V}

' G  h; q+ |( ~: l* C& 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-7-19 18:31 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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