设80c51单片机的晶振频率为12MHz,试编程输出频率为100Hz,占空比2:10的矩形波
kuaidi.ping-jia.net 作者:佚名 更新日期:2024-09-10
设80c51单片机的晶振频率为12MHz,试编程输出频率为100MHz,占空比2:10的矩形波
;如下即可:
ORG 0000H
MOV TMOD, #01H
SETB TR0
LP1:
SETB P1.0
MOV R2, #6
LOOP:
MOV TH0, #(65536 - 16666) / 256
MOV TL0, #(65536 - 16666) MOD 256
JNB TF0, $
CLR TF0
CLR P1.0
DJNZ R2, LOOP
SJMP LP1
END
设80C51单片机晶振频率为12MHZ,定时器作计数器使用时,其最高的输入计数...
答:或者按照时间计算,晶振频率12M的2个机器周期即2us,那么频率就是1/2*10^6=500khz,结果相同。
设80c51单片机的晶振频率为12MHz,试编程输出频率为100Hz,占空比2:10...
答:// 100Hz Out/* Timer1 interrupt routine */void tm1_isr() interrupt 3 using 1{ TEST_100Hz = ! TEST_100Hz; if(TEST_100Hz) { TL1 += T1XXH; //reload timer1 low byte TH1 = T1XXH >> 8; //reload timer1 high byte } else { TL1 += T1...
设晶振频率是12MHz,那一个机器周期是多少?
答:当80C51单片机晶振频率为12MHz时,时钟周期为(1/12)微秒,机械周期为1微秒。在计算机组成原理中又叫T周期或节拍脉冲。是CPU和其他单片机的基本时间单位。它可以表示为时钟晶振频率(1秒钟的时钟脉冲数)的倒数(也就是1s/时钟脉冲数,比如1/12MHz),对CPU来说,在一个时钟周期内,CPU仅完成一个最...
当80C51单片机晶振频率为12MHz时,时钟周期.机器周期各是多少?_百度知 ...
答:1.时钟周期即晶振的单位时间发出的脉冲数,12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒.2.一个机器周期等于12个时钟周期,所以是1微秒.
若80C51 的晶振频率为12MHz,试计算延时子程序的延时时间。(要求计算过 ...
答:当晶振为12MHz时机器周期为1uS(微秒) 标准51的DJNZ指命用时为二个机器周期,由于大循环R2中的数是50,小循环每次被重置为#100 ,故就应该是 1(MOV R1,#50用)+2*50*100(循环所用)+50(MOV R2,#100用的)+2 (RET用的) 这个50 是第一条 MOV R2,#100 每跳出循环重置R2时就要多用的一个...
若80C51 的晶振频率为12MHz,试计算延时子程序的延时时间。(要求计算过 ...
答:;1 NOP ;1 DJNZ R4, LOOP1 ;2 DJNZ R5, LOOP2 ;2 RET ;2 12MHz每个时钟周期是 1微秒 (8*200+1+2)*200*1+1*1+2*1=32603微秒 最大延时时间 (8*256+1+2)*256*1+1*1+2*1=525059微秒
设80C51单片机的晶振频率为12MHz,试用内部定时方式产生频率10kHz的方 ...
答:12M内部12分频后1M,也就是计数频率1us,50us中断一次并对IO口进行取反即可
设80c51单片机的晶振频率为12MHz,试编程输出频率为100MHz,占空比2:10...
答:你好:但就用12MHz的单片机时不可能输出100MHz频率的波形的,因为,单片机最快的速度也才是1us,而且加上指令,速度就好几微妙去了,就算用定时器做,抛开误差不说,最大也只能输出1MHz的波。希望我的回答能帮助到你。
某80C51单片机系统晶振频率=12MHZ,利用定时器T0定时,在P1.0端输出一方 ...
答:include<reg51.h> sbit pluse=P1^0;main(){ TMOD=0x01;TH0=(65536-500)/256;TL0=(65536-500)%256;TR0=1;while(1){ if(TF0==1){ TF0=0;TH0=(65536-500)/256;TL0=(65536-500)%256;pluse=~pluse;} } }
设80C51单片机的时钟频率是12MHZ,利用定时中断T0在P1.0引脚上产生周期...
答:include <reg51.h> void InitTimer0(void){ TMOD = 0x01;TH0 = 0x0F8;TL0 = 0x30;EA = 1;ET0 = 1;TR0 = 1;} void main(void){ InitTimer0();} void Timer0Interrupt(void) interrupt 1 { TH0 = 0x0F8;TL0 = 0x30;//add your code here!} ...
你好:
但就用12MHz的单片机时不可能输出100MHz频率的波形的,因为,单片机最快的速度也才是1us,而且加上指令,速度就好几微妙去了,就算用定时器做,抛开误差不说,最大也只能输出1MHz的波。
希望我的回答能帮助到你。
100HZ的矩形波,周期就是10ms,占空比2:1,就是高的部分占10ms的2/3,低的部分占10ms的1/3。理解了吗?
给个例子,也许可以满足你的要求:
#include "reg51.h"
#define FOSC 12000000L
#define T1XXH (65536-FOSC/12* 2/1000) +2 // 2ms timer calculation method in 12T mode
#define T1XXL (65536-FOSC/12* 8/1000) // 8ms timer calculation method in 12T mode
/* define SFR */
sbit TEST_100Hz = P1^0; // 100Hz Out
/* Timer1 interrupt routine */
void tm1_isr() interrupt 3 using 1
{
TEST_100Hz = ! TEST_100Hz;
if(TEST_100Hz)
{
TL1 += T1XXH; //reload timer1 low byte
TH1 = T1XXH >> 8; //reload timer1 high byte
}
else
{
TL1 += T1XXL; //reload timer1 low byte
TH1 = T1XXL >> 8; //reload timer1 high byte
}
}
//-----------------------------------------------
/* main program */
void main()
{
TMOD = 0x10; //set timer1 as mode1 (16-bit)
TL1 = T1XXH; //initial timer1 low byte
TH1 = T1XXH >> 8; //initial timer1 high byte
TEST_100Hz=1;
TR1 = 1; //timer1 start running
ET1 = 1; //enable timer1 interrupt
EA = 1; //open global interrupt switch
while (1); //loop
}
;如下即可:
ORG 0000H
MOV TMOD, #01H
SETB TR0
LP1:
SETB P1.0
MOV R2, #6
LOOP:
MOV TH0, #(65536 - 16666) / 256
MOV TL0, #(65536 - 16666) MOD 256
JNB TF0, $
CLR TF0
CLR P1.0
DJNZ R2, LOOP
SJMP LP1
END
答:或者按照时间计算,晶振频率12M的2个机器周期即2us,那么频率就是1/2*10^6=500khz,结果相同。
答:// 100Hz Out/* Timer1 interrupt routine */void tm1_isr() interrupt 3 using 1{ TEST_100Hz = ! TEST_100Hz; if(TEST_100Hz) { TL1 += T1XXH; //reload timer1 low byte TH1 = T1XXH >> 8; //reload timer1 high byte } else { TL1 += T1...
答:当80C51单片机晶振频率为12MHz时,时钟周期为(1/12)微秒,机械周期为1微秒。在计算机组成原理中又叫T周期或节拍脉冲。是CPU和其他单片机的基本时间单位。它可以表示为时钟晶振频率(1秒钟的时钟脉冲数)的倒数(也就是1s/时钟脉冲数,比如1/12MHz),对CPU来说,在一个时钟周期内,CPU仅完成一个最...
答:1.时钟周期即晶振的单位时间发出的脉冲数,12MHZ=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒.2.一个机器周期等于12个时钟周期,所以是1微秒.
答:当晶振为12MHz时机器周期为1uS(微秒) 标准51的DJNZ指命用时为二个机器周期,由于大循环R2中的数是50,小循环每次被重置为#100 ,故就应该是 1(MOV R1,#50用)+2*50*100(循环所用)+50(MOV R2,#100用的)+2 (RET用的) 这个50 是第一条 MOV R2,#100 每跳出循环重置R2时就要多用的一个...
答:;1 NOP ;1 DJNZ R4, LOOP1 ;2 DJNZ R5, LOOP2 ;2 RET ;2 12MHz每个时钟周期是 1微秒 (8*200+1+2)*200*1+1*1+2*1=32603微秒 最大延时时间 (8*256+1+2)*256*1+1*1+2*1=525059微秒
答:12M内部12分频后1M,也就是计数频率1us,50us中断一次并对IO口进行取反即可
答:你好:但就用12MHz的单片机时不可能输出100MHz频率的波形的,因为,单片机最快的速度也才是1us,而且加上指令,速度就好几微妙去了,就算用定时器做,抛开误差不说,最大也只能输出1MHz的波。希望我的回答能帮助到你。
答:include<reg51.h> sbit pluse=P1^0;main(){ TMOD=0x01;TH0=(65536-500)/256;TL0=(65536-500)%256;TR0=1;while(1){ if(TF0==1){ TF0=0;TH0=(65536-500)/256;TL0=(65536-500)%256;pluse=~pluse;} } }
答:include <reg51.h> void InitTimer0(void){ TMOD = 0x01;TH0 = 0x0F8;TL0 = 0x30;EA = 1;ET0 = 1;TR0 = 1;} void main(void){ InitTimer0();} void Timer0Interrupt(void) interrupt 1 { TH0 = 0x0F8;TL0 = 0x30;//add your code here!} ...