📄 产生200ms方波.lst
字号:
C51 COMPILER V7.06 瞋蒧200MS_讲_ 05/15/2010 23:50:12 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 瞋蒧200MS_讲_
OBJECT MODULE PLACED IN .\obj\产生200mS方波.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 产生200mS方波.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\产生200mS方波.lst) OB
-JECT(.\obj\产生200mS方波.obj)
stmt level source
1 /*-----------------------------------------------
2 名称:定时器0
3 论坛:www.doflye.net
4 编写:shifang
5 日期:2009.5
6 修改:无
7 内容:通过定时产生200mS方波
8 ------------------------------------------------*/
9 #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
10
11 sbit OUT=P1^2; //定义OUT输出端口
12
13 /*------------------------------------------------
14 定时器初始化子程序
15 ------------------------------------------------*/
16 void Init_Timer0(void)
17 {
18 1 TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
19 1 //TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
20 1 //TL0=0x00;
21 1 EA=1; //总中断打开
22 1 ET0=1; //定时器中断打开
23 1 TR0=1; //定时器开关打开
24 1 }
25 /*------------------------------------------------
26 主程序
27 ------------------------------------------------*/
28 main()
29 {
30 1 Init_Timer0();
31 1 while(1);
32 1 }
33
34 /*------------------------------------------------
35 定时器中断子程序
36 ------------------------------------------------*/
37 void Timer0_isr(void) interrupt 1 using 1
38 {
39 1 static unsigned char i;
40 1 TH0=(65536-10000)/256; //重新赋值 12M晶振计算,指令周期1uS,200mS方波半个周期100mS,由于定时器最大值65
-536 即65.536ms 所以
41 1 TL0=(65536-10000)*256; //直接定时器不够用,需要用循环处理,定时10ms,然后循环10次后输出 10x10=100m
-s
42 1
43 1 i++;
44 1 if(i==11)
45 1 {
46 2 i=0;
47 2 OUT=~OUT; //用示波器可看到方波输出
48 2 }
49 1
50 1 }
C51 COMPILER V7.06 瞋蒧200MS_讲_ 05/15/2010 23:50:12 PAGE 2
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 42 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -