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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
按下P55按键,将外部中断0计数值返回给上位机,现在外部中断0进入不了,不能计数,求教。
; I, Y5 T% s) C4 l, l
4 b$ M/ q8 b! r2 _, F7 W
" v  f' M' L& V#include "config.h"
  ~# S9 F/ E7 g; h5 v2 w* l
#include "delay.h"
2 u- V$ K/ s6 k, [+ y0 W1 E#include "uart.h"
4 w7 ]1 t$ ~% w. ?  Tunsigned int INT0_cnt=0, INT1_cnt=0; //测试用的计数变量
  v1 P; g! f9 C* v- @; ?sbit key=P5^5;4 h1 V8 z, ?6 ]/ j
/************* 功能说明 **************! H- M7 J2 @& f  N
) G, c/ ?4 m, s
******************************************/
$ W, _" F% [3 U. J& o! ]/************* 本地常量声明 **************/% p4 R6 Y4 p; k8 T/ r+ ~
& g1 y6 ~& ?2 K- Q+ z
/************* 本地变量声明 **************/8 x- d# _0 M: `3 i4 \* ~" k) w

+ e6 a) v4 J6 n3 @6 {/************* 本地函数声明 **************/
1 p: q1 l  Q; G6 W; t# c9 X
; }/ p' Y5 X2 S: @/*************  外部函数和变量声明 *****************// q, H( F0 s! @, s; X$ _

1 e* j6 b3 B- T& n% e3 t+ z/******************** IO配置函数 **************************/
; k! H( h" Y2 r. _2 Q- ~5 }5 Nvoid GPIO_config(void)
6 `5 |1 B, u2 D5 o6 @{
: e& x6 ^' `4 G9 ]$ Y" b' xP5M1 = 0x40;   //设置准双向口; J- R; O2 ~3 }5 X  k) E% Q7 Z0 i
P5M0 = 0x00;; \2 _( o9 E( r' u4 d
P0M1 = 0; P0M0 = 0; //设置为准双向口* E# m% ]  O- I; _
P1M1 = 0; P1M0 = 0; //设置为准双向口5 W2 t, p. A% @
P2M1 = 0; P2M0 = 0; //设置为准双向口
. q4 K) @- y/ Q; g7 b' Z8 wP3M1 = 0; P3M0 = 0; //设置为准双向口# A4 [5 z& l, K2 J0 r' Q) h
P4M1 = 0; P4M0 = 0; //设置为准双向口0 J& G8 T3 S( {! B' G
P5M1 = 0; P5M0 = 0; //设置为准双向口
! l7 m2 @0 s3 u  d$ _P6M1 = 0; P6M0 = 0; //设置为准双向口
9 M5 [2 Q, v2 V3 ZP7M1 = 0; P7M0 = 0; //设置为准双向口
5 Y& y$ q9 _7 z% e/ Z: w}' ~8 F$ k  o1 W$ v5 u2 f
/******************** 主函数 **************************/
; u* Z$ x  G/ F- Dvoid main(void)
# k8 S% O1 N& I$ ~( h+ T( M{! c/ ~% d& f+ N1 _
int count = 0;5 n  i+ o0 K' x$ O. {/ s6 |5 u
GPIO_config();
8 l6 }- {; r5 T$ n1 [, h! Q6 rUartinit();
8 {# L5 z' m. _. u. ]1 ^: A9 a) y" l; u$ w6 |' l
INT0_cnt = 0;
! k2 j# m/ o3 u! }4 |INT1_cnt = 0;8 ~1 M# r6 D9 B, |6 S
IE1  = 0; //外中断1标志位% N$ S% V- [4 l) A
IE0  = 0; //外中断0标志位
% }: K* ~% U( @$ Y0 Q1 HEX1 = 1; //INT1 Enable. i+ S9 J. j6 @. Z; Z% j  f
EX0 = 1; //INT0 Enable- `! Y. v: \" }+ D; ]& S. W
IT0 = 1;  //INT0 下降沿中断  
1 m  g0 ?/ \3 _. {; E) f5 b// IT0 = 0;  //INT0 上升,下降沿中断
, b8 R  u' c( `- X/ {9 dIT1 = 1;  //INT1 下降沿中断  # t% z' ?  ^  S2 O6 O$ {
// IT1 = 0;  //INT1 上升,下降沿中断 " }  t1 X& e8 ^
EA = 1;  //允许总中断
: Y4 @* p* g: ~while(1)8 J: u: B; A3 o* d; }
{
: ?8 Z5 O* ~' t7 x4 |6 C. P5 b/ S6 t) N8 c( i4 h. K
    ! r1 B. c1 [: m2 s" A
   SendData(1+0x30);2 ^/ f2 y  _8 c5 H( T7 }, C
  
# L, R" B6 y7 P# u   IF(INT0_cnt >= 65536)  k+ W( R  f! Q2 @; ~! d6 |/ Z+ m' H
    INT0_cnt = 0;3 b5 N1 b2 Y4 A3 q
   if(key==0)
2 c% a. J- V! P6 u   {. j0 E: ^7 Q! m0 m
    delay_ms(10);" }, k* F# E* s+ O
    if(key==0)
2 c! j7 d1 F) |+ s- C- S. c# I    {3 c# B! |1 F- M5 \
    + o1 w, w+ k! I# [
     while(!key);
, G7 Y* ^0 q& {4 i% |  q/ d     SendData(INT1_cnt/10000+0x30);! f" D+ D# Q7 e$ Q' j
     SendData(INT1_cnt%10000/1000+0x30);
: o# O/ d3 o( h+ l     SendData(INT1_cnt%10000%1000/100+0x30);
" R) j) |! f& ]3 v' j8 M+ `5 f     SendData(INT1_cnt%10000%1000%100/10+0x30);& l! _: u5 V: H3 p' U
     SendData(INT1_cnt%10+0x30);
. O" T1 s0 z: \; U" X9 ^: r     SendString("\r\n");+ z6 P6 t  \0 k4 b, U4 m- W* ]
     INT1_cnt=0;
  t! p, e% j+ V% y. K" ^     8 U; y6 B- l4 \! `) O& k" ]6 V; t
    }
1 X" H, @( P) U* c   
, {0 U( E( Y% ^8 F. z  B   }( N* @4 O/ H+ p7 H
   
  C) E( e! P; F; r! t}
) g/ I0 h% ?2 e0 D# y1 _}
! E1 P- l* e3 w( @/********************* INT0中断函数 *************************/6 a8 y2 l2 l* d2 y
void INT0_int (void) interrupt 0  //进中断时已经清除标志; J1 B+ t+ O) k! e% @: f1 J
{+ O4 v  d! h9 o
EX0=0;4 X: o0 |. g2 _
INT0_cnt++; //中断+1* m/ o# Z3 [+ M+ K5 v& m
EX0=1;
, l  |, r: T( ?4 y6 V}
) V: r* Q! ]( A1 T! d+ L/********************* INT1中断函数 *************************/
0 V; D5 s; ~: e, y1 q5 h1 Xvoid INT1_int (void) interrupt 2 //进中断时已经清除标志
7 P' M# ]) K* b" i{
' A! P9 S$ q7 ^) I7 A, ]. h/ HEX1=0;
! ?2 e9 h- v& x- I0 `. HINT1_cnt++; //中断+1, r9 b; T- G; C5 \5 D+ r# }- G' w! f
}
0 ^+ c3 D! j" U# e  j3 A3 C
8 m9 E  V4 L$ X# S+ R$ p7 L/*********************************************************// _& ]: R# C) e2 c3 Z; @
//#define MAIN_Fosc  22118400L //定义主时钟
0 ?# I! ]! P! z0 \- ?( O7 X3 |+ }//#define MAIN_Fosc  12000000L //定义主时钟
8 y" w1 Y+ v0 k! M#define MAIN_Fosc  11059200L //定义主时钟
' ?0 g+ r9 x2 I) H9 v//#define MAIN_Fosc   5529600L //定义主时钟
: V4 ]( Z2 s; u, k- m7 Y2 y//#define MAIN_Fosc  24000000L //定义主时钟
8 ^! H( k" j+ D, m- |1 v7 K, a, t5 M#define BaudRate1 9600UL
0 v& P4 e" J! X6 P! F#define Timer2_Reload (65536UL-(MAIN_Fosc/4)/BaudRate1)
( G0 u- @! ~% h1 S$ I/*********************************************************/
$ b* R" S( q% i$ E5 H# ~0 O4 Q5 M" n#include "uart.h"
, a5 _, ?" _4 Y9 V3 b7 o8 n2 V- i
1 ^/ G! G2 C/ F0 b2 Z- X2 R5 wvoid UartInit(void)  [url=]//9600bps@11.0592MHz[/url]' y% A4 ~- Q  o6 y1 s+ \
{
$ z, T  T8 B* h; D) uSCON = 0x50;                //8位可变波特率
/ W' a' {" U3 r- ~$ D$ R; }! S# JAUXR&=~(1<<4);  
) j. c: B& R1 S. GAUXR|=0x10;
0 b( r/ V; H$ X3 Z. f, q( iAUXR|=(1<<2);& \) S% X- e6 D4 W
T2H =(u8)(Timer2_Reload>>8);
9 B7 v/ F4 U! U1 ?8 _* q5 qT2L=(u8)(Timer2_Reload);4 u: _, j5 _# o4 {% p1 \& Y
AUXR|=(1<<4);  //启动
; c$ _* ?+ e5 t% F$ X- IREN=1;
' f. K+ B# j5 U1 G0 ZES=1;EA=1;
9 s2 q( T* d/ m% I! o* a( B}# R1 a& s: _; @) K" B7 P$ G: _
/*----------------------------. P" a: ^0 O% Z$ W
发送串口数据
+ s, Z, A# Y5 f, S3 h8 k8 `----------------------------*/
' x/ |3 T) c( D9 N, M+ @void SendData(unsigned char ch)
* X6 r8 M! x* n: _{2 K% p- s/ P9 R, o/ V+ D) K" I
     SBUF = ch;                 //写数据到UART数据寄存器
* T* v; |  e/ P5 l* e) E. U  while(TI == 0);- C! `# t2 _2 O1 k5 \
   TI = 0;" L9 w, C4 s$ s+ K, y8 r% d
}. ~0 h1 o, |* P# X% c
/*----------------------------
, x+ Q! ]* J! S) L  U, n发送字符串
# w) y/ B* j0 r  W4 {6 ^& P----------------------------*/1 U! O+ O' M  q3 N) {
void SendString(char *s)
9 @" B. c! |+ q. m{
$ @9 J+ K2 Z8 |0 Y     while (*s)                  //检测字符串结束标志2 h0 J5 Q- |( r/ \* C6 h8 _
    {  f+ y5 t3 o+ v& r# v
         SendData(*s++);         //发送当前字符/ ]7 I/ e  H9 n$ e! l
    }
9 Z: p' F* w1 n  q}

# j) g6 _1 y% 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-6-21 13:03 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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