📄 timer_fangbo_c.lst
字号:
C51 COMPILER V7.06 TIMER_FANGBO_C 05/14/2006 16:51:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TIMER_FANGBO_C
OBJECT MODULE PLACED IN timer_fangbo_c.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE timer_fangbo_c.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //****************************************************
2 //实现功能:单片机的晶振为12MHz,使用定时/计数器0编写
3 // 一个产生2KHz的方波程序,并在P1.0输出
4 //目标板:
5 //****************************************************
6 #include <reg51.h>
7 //*****************宏定义*****************************
8 sbit p_out=P1^0;//宏定义P1.0为p_out,方波的输出脚
9 //****************************************************
10 //*****************定义全局变量***********************
11 unsigned int td_num;
12 //****************************************************
13 //******************定义子函数************************
14 void timer_init(unsigned char time_num,unsigned char time_GATE,unsigned char time_CT,unsigned char time_mo
-de);
15 //****************************************************
16 //*********************主函数************************
17 //描 述:使用使用定时/计数器0编写一个产生2KHz的
18 // 方波程序,并在P1.0输出
19 //入口参数:无
20 //返回参数:无
21 //设 计:ycj
22 //最后修改:时间(2006.5.2) 修改人(ycj)
23 //****************************************************
24 int main(void)
25 {
26 1 timer_init(0,0,0,2);//定时器0,GATE=0仅由TR0控制定时器0的启动,设定为定时器功能,方式2(计数器长度为8位)
27 1 TL0=0x6;//对定时器赋初值TC=6,也就是计数250次后溢出
28 1 TH0=0x6;//自动重装值
29 1 TR0=1;//启动定时器0
30 1 ET0=1;//允许T0中断
31 1 EA=1;//允许全局中断
32 1 while(1);//死循环
33 1 }
34 //************************定时器初始化函数***************************
35 //描 述:对定时/计数器初始化
36 //入口参数:unsigned char time_num 定时/计数器的编号(0或者1)
37 // unsigned char time_GATE 定时/计数器的门控制位(0或者1)
38 // unsigned char time_CT 定时/计数器的功能选择位(0或者1)
39 // unsigned char time_mode 定时/计数器的方式选择(0~3)
40 //返回参数:无
41 //设 计:ycj
42 //最后修改:时间(2006.5.2) 修改人(ycj)
43 //*******************************************************************
44 void timer_init(unsigned char time_num,unsigned char time_GATE,unsigned char time_CT,unsigned char time_mo
-de)
45 {
46 1 if (time_num==0)
47 1 {
48 2 TMOD&=0xf0;
49 2 TMOD|=(time_GATE<<4)+(time_CT<<3)+(time_mode);
50 2 }
51 1 else if (time_num==1)
52 1 {
53 2 TMOD&=0x0f;
C51 COMPILER V7.06 TIMER_FANGBO_C 05/14/2006 16:51:36 PAGE 2
54 2 TMOD|=(time_GATE<<8)+(time_CT<<7)+(time_mode<<4);
55 2 }
56 1 }
57 //************************定时器0中断处理函数***********************
58 //描 述:定时器0中断处理函数,实现P1.0脚输出2KHz的方波
59 //入口参数:无
60 //返回参数:无
61 //设 计:ycj
62 //最后修改:时间(2006.5.2) 修改人(ycj)
63 //*******************************************************************
64 void timer0(void) interrupt 1 using 1
65 {
66 1 if (td_num>=10)
67 1 {
68 2 p_out=!p_out;
69 2 td_num=0;
70 2 }
71 1 else
72 1 td_num++;
73 1
74 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 110 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 4
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 + -