|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机模式1为16为定时计数器,1、在定时器模式1的中断函数内重置该定时器,能否实现自动重装的效果?2、自己以流水灯为例试了一下,好像不可以,大家帮忙看一下程序有没有问题。(定时器定时10s,变量i,用来加倍定时)
( z5 _# F+ U( J2 w: F5 V6 G( \) c* `! A! c- e# M8 J- o; G
#include <reg52.h>- |/ T/ _0 V4 P3 ^1 M/ u" O. [
#define uint unsigned int% L" F/ @3 ~1 J8 k- X
uint data i = 0;. R, }0 @. N1 Y8 [
void time0_init(void)
; L! v( `4 a( w1 Y/ H% ^" Y' @7 g{! k, o: W% p! _2 u% h/ A8 G+ d o
TMOD = 0x02;
7 w4 o+ [! W, Y: W TH0 = (65536-60000)/256;8 O( R7 \9 g, E9 \: l
TL0 = (65536-60000)%256;) a( A, F& g( D% p+ R1 @
EA = 1;. Z m6 K1 }) I( |5 {" \
ET0 = 1;
/ U J b( e G2 X5 C0 W" F TR0 = 1;, P2 j P2 V2 Q- W3 [1 {
}3 E$ W* Q( C# t% b( T* p
/ J* z) ?+ v3 w/ T' Y1 `. O1 g& h2 ?6 a
int main()% f, p5 [0 Z4 L2 Z7 q& B3 A& X1 a
{
- T2 ]7 ^7 a" `9 P" S: ~, r" d P1=0xfe;
! w; M7 T% b* L7 B% N time0_init();- G* V" ?& g" A0 Y
while(1);
9 U }9 E- R) s}: n( h% w1 ~7 _- Q) M
: s/ x: D' i1 i. Q) s
% F2 z8 H( y) o* `; N/ T
( k8 [9 V- U# o) lvoid flash(void) interrupt 1
# ~* z( l+ c3 I7 V: a/ _/ |{
" {. [& R" G/ f/ G2 Q: t0 S# \ time0_init();: D" w8 `' G: ^6 [3 }9 j
if(i>9)
4 W! a1 C! ]5 j# E( n3 o$ w# ? {
) [! [6 N4 I2 Q O" j$ M+ U* b4 X if(P1==0x7f)
. u" l" A( e% c9 |: _ {( ]+ r( ^3 I: L! X
P1=0xfe;* y9 S( j( B2 S# w, @3 A1 q, p
}
" o7 h' W4 r5 X( d; g else
! ]% V6 ^ v8 q% M {
2 L3 a' i5 |8 P P1<<=1;" j0 x% N4 N7 w0 R
P1|=0x01;. }1 {/ s N/ L. e, r$ E% q
}
+ m* k: ?0 _7 w( m& t i=0;
- Q5 c& @1 [3 \ }
- Z! y8 @9 }8 ?5 C$ [) r7 a i else
0 a9 {( ^( G0 `5 Z# l i++;
% p8 | o. x& y; x3 U* k5 j/ G' `* _} z% G3 ]3 ^) G9 K _
8 D1 `' Q) _) }. c# w! R- \
/ u) }* u" {8 W+ U3 J' c; v: }- s. I% L/ l% h) U9 M/ {2 N8 B
|
|