单片机我想用T0定时器定时1s,用T1计数器来计算1s时间内的方波数,定时器采用中断方式。循环获取 51单片机用T0计数器计算T1定时器的溢出次数,该如何实现?

\u6c47\u7f16\u7a0b\u5e8f \u5355\u7247\u673a\u6211\u60f3\u7528T0\u5b9a\u65f6\u5668\u5b9a\u65f61s\uff0c\u7528T1\u8ba1\u6570\u5668\u6765\u8ba1\u7b971s\u65f6\u95f4\u5185\u7684\u65b9\u6ce2\u6570\uff0c\u5b9a\u65f6\u5668\u91c7\u7528\u4e2d\u65ad\u65b9\u5f0f\u3002

CNTH EQU 30H
CNTL EQU 31H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#51H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
MOV TH1,#0
MOV TL1,#0
SETB TR0
SETB TR1
SETB ET0
SETB EA
MOV R2,#20
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E
MOV R2,#20
MOV CNTH,TH1
MOV CNTL,TL1
MOV TH1,#0
MOV TL1,#0
T0E:
RETI
END

\u65b9\u6cd5\u4e00\uff1a
\u53ea\u5f00T1\u5b9a\u65f6\u5668\u4e2d\u65ad\uff0c\u5728T1\u5b9a\u65f6\u5668\u4e2d\u65ad\u5b50\u7a0b\u5e8f\u4e2d\u5bf9\uff08TH0 TL0\uff09\u505a\u52a0\u4e00\u8fd0\u7b97\u3002
\u65b9\u6cd5\u4e8c\uff1a
T1\u5b9a\u65f6\u5668\u6a21\u5f0f\uff0cT0\u8ba1\u6570\u5668\u6a21\u5f0f\uff0c\u5728T1\u5b9a\u65f6\u5668\u4e2d\u65ad\u5b50\u7a0b\u5e8f\u4e2d\u5bf9\u67d0\u4e00\u56fa\u5b9a\u5f15\u811aPx.x\u505a\u201c\u7f6e1-\u6e050-\u7f6e1\u201d\u64cd\u4f5c\uff0c\u5e76\u5c06\u5bf9\u5e94\u5f15\u811a\u8fde\u63a5\u5728T0\uff08P3.4\uff09\u5f15\u811a\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0bT0\u4e2d\u65ad\u6bd4T1\u4e2d\u65ad\u6743\u9650\u9ad8\uff0c\u6bcf\u6b21\u5b9a\u65f6\u5668T1\u6ea2\u51fa\u540e\uff0c\u4f1a\u5728\u4e2d\u65ad\u5b50\u7a0b\u5e8f\u5185\u5bf9\u5f15\u811aPx.x\u8fdb\u884c\u201c\u7f6e1-\u6e050-\u7f6e1\u201d\uff0c\u8fc7\u7a0b\u4e2d1\u52300\u7684\u4e0b\u964d\u6cbf\u8df3\u53d8\u4f1a\u5f15\u8d77\uff08TH0 TL0\uff09\u52a0\u4e00\uff1b\u76f4\u5230\u8ba1\u6570\u5668T0\u6ea2\u51fa\u524d\u7684\u201c\u7f6e1-\u6e050\u201d\u65f6\u523b\u540e\u201c\u7f6e1\u201d\u65f6\u523b\u524d\uff0cT0\u4ea7\u751f\u6ea2\u51fa\u4e2d\u65ad\uff0c\u4e2d\u65adT1\u7684\u4e2d\u65ad\u5b50\u7a0b\u5e8f\u3002
\u6bd4\u8f83\uff1a
\u5982\u679c\u4ec5\u4ec5\u4e3a\u4e86\u8ba1\u7b97\u201cT1\u5b9a\u65f6\u5668\u7684\u6ea2\u51fa\u6b21\u6570\u201d\u7684\u8bdd\uff0c\u968f\u4fbf\u5b9a\u4e49\u4e24\u4e2a\u5b57\u8282\u7684\u201c\u5185\u90e8RAM\u6570\u636e\u5b58\u50a8\u5668\u201d\u5c31\u53ef\u4ee5\u4e86\uff0c\u548c\u65b9\u6cd5\u4e00\u7c7b\u4f3c\uff0c\u5728\u4e2d\u65ad\u5b50\u7a0b\u5e8f\u4e2d\uff0c\u5bf9\u5bc4\u5b58\u5668\u5185\u6570\u503c\u52a0\u4e00\uff0c\u5b8c\u5168\u53ef\u4ee5\u5b9e\u73b0\u3002
\u7528T0\u7b97T1\u592a\u6d6a\u8d39\u8d44\u6e90\u4e86\uff01
\u5b9a\u4e49\u201c\u5185\u90e8RAM\u6570\u636e\u5b58\u50a8\u5668\u201d\u8ba1\u7b97\u201cT1\u5b9a\u65f6\u5668\u7684\u6ea2\u51fa\u6b21\u6570\u201d\u7684\u7a0b\u5e8f\uff1a
\u53ef\u4ee5\u7528Keil\u4eff\u771f\u4ee5\u4e0b\uff0c\u80fd\u770b\u51fa\u6548\u679c\u7684\uff01


【1】循环获取是否指从当前时刻算起,前一秒内T1计得的方波数。
【2】这里缺少一个参数,就是循环获取的采样周期t(S),如0.1S。
【3】根据t,设定T0中断。总共应该有1/t个采样片段PulseNum[1/t],每次T0中断,填充PulseNum[i++%(1/t)]。并清除T1初值。
【4】主程序求和PulseNum[1/t]即可。
【5】注意T1溢出量程。

计算1秒内的方波数,应该是采样了,但是,这要用到计数器吗。

  • 鍗曠墖鏈烘垜鎯崇敤T0瀹氭椂鍣ㄥ畾鏃1s,鐢═1璁℃暟鍣ㄦ潵璁$畻1s鏃堕棿鍐呯殑鏂规尝鏁,瀹氭椂鍣...
    绛旓細銆1銆戝惊鐜幏鍙栨槸鍚︽寚浠庡綋鍓嶆椂鍒荤畻璧凤紝鍓嶄竴绉掑唴T1璁″緱鐨勬柟娉㈡暟銆傘2銆戣繖閲岀己灏戜竴涓弬鏁帮紝灏辨槸寰幆鑾峰彇鐨勯噰鏍峰懆鏈焧锛圫锛夛紝濡0.1S銆傘3銆戞牴鎹畉锛岃瀹T0涓柇銆傛诲叡搴旇鏈1/t涓噰鏍风墖娈礟ulseNum[1/t]锛屾瘡娆0涓柇锛屽~鍏匬ulseNum[i++%(1/t)]銆傚苟娓呴櫎T1鍒濆笺傘4銆戜富绋嬪簭姹傚拰PulseNum[1/t]鍗冲彲銆
  • 姹囩紪绋嬪簭 鍗曠墖鏈烘垜鎯崇敤T0瀹氭椂鍣ㄥ畾鏃1s,鐢═1璁℃暟鍣ㄦ潵璁$畻1s鏃堕棿鍐呯殑鏂规尝...
    绛旓細MOV TL1,#0 T0E:RETI END
  • ...瀹氭椂鍣═0宸ヤ綔鍦ㄦ柟寮2,鐜拌瀹炵幇1s瀹氭椂,璇峰啓鍑哄疄鐜拌繃绋嬨
    绛旓細PUSH ACC MOV TH0,#00H ;瀹氭椂250us MOV TL0,#06H INC INT_COUNT_L MOV A,INT_COUNT_L CJNE A,#100,T0INT_EXIT MOV INT_COUNT_L,#0 INC INT_COUNT_H MOV A,INT_COUNT_H CJNE A,#40,T0INT_EXIT ;1绉璁℃椂鍒颁簡 MOV INT_COUNT_H,#0 ;T0INT_EXIT:POP ACC POP DPL POP DPH RET...
  • AT89C51鍗曠墖鏈哄埄鐢ㄥ畾鏃跺櫒|璁℃暟鍣═0浜х敓1绉掗挓鐨勫畾鏃,姣忓綋涓绉掑畾鏃跺埌鏉ユ椂...
    绛旓細;浠跨収渚7.11 ;TC=M-T/T璁℃暟=9E58H(鍏朵腑T=25ms)ORG 0000H LJMP MAIN ORG 000BH AJMP BRT0 ORG 0030H MAIN:CLR P1 MOV TMOD,#01H;T0涓烘柟寮1 SETB EA SETB ET0 SETB TR0 MOV TH0,#9EH MOV TL0,#58H MOV R0,#04H MOV A,#01H LOOP:SJMP $;绛夊緟涓柇 ORG 0080H BRT0:DJN...
  • 鍗曠墖鏈虹敤T0瀹氭椂1s,鍥剧墖涓婄殑4B鏄庝箞寰楀埌鐨?
    绛旓細杩欐槸鍦11.0592MHz鐨勫閮ㄦ櫠鎸墠鎻愪笅锛岀敱浜瀹氭椂鍣鏈韩鏃犳硶寤惰繜1绉掗偅涔堥暱鐨勬椂闂达紝鎵浠ョ敤杞欢鍒嗘垚20浠斤紝姣忎唤灏辨槸 11059200梅12梅20=46080 瀵瑰簲鐨勯噸杞藉煎氨鏄65536 - 46080 = 19456 = 0x4C00銆傚噺鍘昏蒋澶勭悊鏃剁殑涓変釜鎸囦护鍛ㄦ湡锛屽氨鏄0x4BFD銆
  • ...閲囩敤瀹氭椂鍣═0鐨勬柟寮1,璇风紪绋嬪疄鐜1s鐨勫欢鏃躲
    绛旓細DELAY1S: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 MOV R2,#20LOOP: JNB TF0,$ CLR TF0 CLR TR0 MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 DJNZ R2,LOOP RET ...
  • 鐢鍗曠墖鏈姹囩紪璇█缂栧啓涓绉掔殑瀹氭椂 鐢ㄥ畾鏃跺櫒T0 鏂瑰紡2 鎬ユ眰!!
    绛旓細main: MOV TIME1S,#0 MOV TIME50ms,#0 MOV TMOD ,#02H ;鍐欐帶鍒跺瓧锛屽皢T0璁句负鏂瑰紡2( 8浣嶈嚜鍔ㄩ噸瑁咃級MOV TH0, #06H ;THO鍜孴L0鐨勮绠椾负锛2鐨16娆℃柟-锛堟櫠鎸*瀹氭椂鏃堕棿 /12锛塎OV TL0, #06H ;TC =0FFH-06H= 6H =6===銆嬪欢鏃舵椂闂翠负(2^8-TC)*12/16 =250us 瀹氭椂鏃...
  • 鍗曠墖鏈璁T0瀹氭椂1s鏈変粈涔堝姙娉?
    绛旓細鎵浠ヨ锛屼綘寰楀涔犵爺绌朵綘鐢ㄧ殑鍗曠墖鏈纭欢瀹氭椂鍣鐨勯厤缃柟娉曪紱纭欢瀹氭椂鍣ㄥ浼氶厤缃娇鐢ㄥ悗銆傛瘮濡傦紝浣犻厤缃1ms鍩虹鏃堕棿瀹氭椂鍣ㄨ繘鍏ヤ腑鏂湇鍔″嚱鏁1娆★紝鐒跺悗鍦ㄤ腑鏂湇鍔″嚱鏁皌imer_ISR閲岄潰锛屽啀瀹氫箟涓涓猻tatic闈欐佸彉閲廲nt锛屾瘡杩涘叆1娆′腑鏂湇鍔″嚱鏁皌imer_ISR锛屽彉閲廲nt++锛屽綋cnt = 1000浜嗭紝鏄笉鏄氨鎰忓懗鐫1s鏃堕棿鍒 浜嗐傛墦涓...
  • ...閲囩敤瀹氭椂鍣═0鐨勬柟寮1,璇风紪绋嬪疄鐜1s鐨勫欢鏃躲
    绛旓細TOMD=0x01;//閫夋嫨瀹氭椂鍣0骞堕夋嫨宸ヤ綔鏂瑰紡1 TH0=(65536-50000)/256;TL0=(65536-500000)%6;EA=1;ET0=1;TR0=1;} 杩欐牱鍒濆鍖栧氨娌¢棶棰樹簡锛屽彟澶栬瀹炵幇1S寤舵椂锛岄渶瑕佸湪涓柇鍑芥暟閲屽姞涓彉閲忚嚜澧烇紝鍥犱负鎴戝畾涔夌殑鏄50ms涓柇涓娆★紝閭d箞杩欎釜鍙橀噺鍊艰嚜澧炲埌20鍚庡氨浠h〃1s鏃堕棿鍒帮紝娓呴浂杩欎釜鍙橀噺涔嬪悗鏂瑰彲鍐欎綘鐨...
  • 濡備綍鍒╃敤瀹氭椂鍣═0鐨勫伐浣滄柟寮1瀹炵幇1绉掗挓寤舵椂绋嬪簭(鍗曠墖鏈)?
    绛旓細/256;TL0 = (65535-50000)%256;if(++T_Count == 20){LED = !LED;T_Count = 0;}} 6銆佽繖涓▼搴忔槸1绉掗挓LED鐏細浜笌鐏樉绀恒1鍗曠墖鏈锛屾嫢鏈変袱涓瀹氭椂鍣锛岀敤鏉ヤ腑鏂鏁帮紝鍒嗗埆鏄T0鍜孴1銆傝52鍗曠墖鏈哄拰51鍗曠墖鏈虹殑瀹氭椂鍣ㄦ槸涓鏍风殑锛屽彧鏄52姣51澶氫簡涓涓畾鏃跺櫒/璁℃暟鍣═2锛屽畠浠殑璁剧疆閮藉ぇ鍚屽皬寮傘
  • 扩展阅读:24小时程控定时器 ... 万能语音报时器 ... 定时器下载安装 ... 定时器多少钱一个 ... 电子定时器开关 ... 定时器设置时间步骤 ... 定时开关控制器 ... 定时器怎么调时间教程 ... 定时器时钟1t模式 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网