单片机,10000H-7DH怎么计算的求详细计算过程

如题所述

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

51

单片机

C

语言程序(二)定时

/

计数器

 

中断

 

 

 

程序一

 

利用定时

/

计数器

T0

P1.0

输出周期为

1s 

的方波,

 

让发光二极管以

1HZ

闪烁,

 

#include<reg52.h>  

//52

单片机头文件

 

#include <intrins.h> //

包含有左右循环移位子函数的库

 

#define uint unsigned int    

//

宏定义

 

#define uchar unsigned char  

//

宏定义

 

sbit P1_0=P1^0; 

uchar tt; 

void main()      

//

主函数

 

TMOD=0x01;//

设置定时器

0

为工作方式

TH0=(65536-50000)/256; 

TL0=(65536-50000)%256; 

EA=1;//

开总中断

 

ET0=1;//

开定时器

0

中断

 

TR0=1;//

启动定时器

while(1);//

等待中断产生

 

 

}

 

单片机系统开发,2021最新报价!立即围观!

广告 单片机系统开发意法半导体包含广泛产品线包含低成本8位单片机和具备丰富外设选择的单片机系统开发单片机。 查看详情 >

void timer0() interrupt 1 

TH0=(65536-50000)/256; 

TL0=(65536-50000)%256; 

tt++; 

if(tt==20) 

 tt=0; 

 P1_0=~P1_0; 

}

 

  

程序二

 

利用定时

/

计数器

T1

产生定时时钟

P1

口控制

8

个发光二极管

使

8

个指示灯依次一个一个闪动,

 

闪动频率为

10

/

(8

个灯依次亮一遍为一个周期

)

,循环。

 

#include<reg52.h>  

//52

单片机头文件

 

#include <intrins.h> //

包含有左右循环移位子函数的库

 

#define uint unsigned int    

//

宏定义

 

#define uchar unsigned char  

//

宏定义

 

华清远见c语言单片机,新手入门-实战教学,嵌入式开发

广告 c语言单片机,华清远见自主研发,软硬件结合教学,毕业相当于拥有1-3年工作经验。 查看详情 >

sbit P1_0=P1^0; 

uchar tt,a; 

void main()      

//

主函数

 

TMOD=0x01;//

设置定时器

0

为工作方式

TH0=(65536-50000)/256; 

TL0=(65536-50000)%256; 

EA=1;//

开总中断

 

ET0=1;//

开定时器

0

中断

 

TR0=1;//

启动定时器

a=0xfe; 

while(1);//

等待中断产生

 

 

}

 

void timer0() interrupt 1 

TH0=(65536-50000)/256; 

TL0=(65536-50000)%256; 

tt++; 

if(tt==2) 

 tt=0; 

百度安全OTA-专业,可靠的单片机ota,初创企业免费申领

广告 2万台设备OTA额度面向初创企业【免费开放】,为企业降低OTA成本,提高设备安全系数。 查看详情 >

 P1=a; 

 a=_crol_(a,1); 

}

 

  

程序三

 

 

同时用两个定时器控制蜂鸣器发声,

 

定时器

0

控制频率,定时器

1

控制同个

 

频率持续的时间,间隔

2s

依次输出

 

1

10

50,100

200,400,800, 

1k

hz

)的方波

 

#include<reg52.h>  

//52

单片机头文件

 

#include <intrins.h> //

包含有左右循环移位子函数的库

 

#define uint unsigned int    

//

宏定义

 

#define uchar unsigned char  

//

宏定义

 

sbit beep=P2^3; 

uchar tt; 

uint fre,flag;

 

void main()      

//

主函数

 

fre=50000; 

活字格-企业级低代码开发平台,软博会获奖产品

广告 可视化设计,快速开发企业Web应用,帮助用户快速构建支持移动端的企业级应用程序,满足企 查看详情 >

beep=0; 

TMOD=0x11;//

设置定时器

0,

定时器

1

为工作方式

TH0=(65536-fre)/256; 

TL0=(65536-fre)%256; 

TH1=(65536-50000)/256; 

TL1=(65536-50000)%256; 

EA=1;//

开总中断

 

ET0=1;//

开定时器

0

中断

 

ET1=1; 

TR1=1; 

TR0=1;//

启动定时器

while(1);//

等待中断产生

 

 

}

 

void timer0() interrupt 1   

//

定时器

0

中断

 

TR0=0;    

//

进中断后先把定时器

0

中断关闭,防止内部程序过

多而造成中断丢失

 

TH0=(65536-fre)/256; 

TL0=(65536-fre)%256; 

tt++; 

if(flag<40)    

//

以下几个

if

分别用来选取不同的频率

 


等,希望以上内容能对你有所帮助、。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-23
由于处理器寄存器包含很多bit,每位有不同的意思,所以通常在操作这些寄存时某位时,需要不改变其他位,所以有如上做法:
A &= ~B, 将A值的B位清零
A |= B 将A值的B位置一

A = ~A, 将A值取反如TA1CCTL0&=~CCIE;是什么意思?再如inta;intn=0x0a;a=~(k);是多少?怎么算出来的?、还有P1OUT&=~(BIT1+BIT2+BIT3)是很么意思、P1OUT&=~(BIT1+BIT2+BIT3... 如TA1CCTL0&=~CCIE;是什么意思?
再如 int a ;
int n=0x0a;
a=~(k);是多少 ?怎么算出来的?、
还有P1OUT&=~(BIT1+BIT2+BIT3)是很么意思、
P1OUT
&=~(BIT1+BIT2+BIT3 展开