⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 一种51单片机接收电话线上DTMF(拨号DTMF的应用程序)
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.02  MAIN                                                                   12/07/2004 13:03:12 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\testdtmf\C51.EXE main.c CODE SMALL SB

stmt level    source

   1          #include ".\pubDcl.dcl"
   2          #include ".\reg52.h"
   3          #include ".\extio.h"
   4          #include ".\valuedef.h"
   5          
   6          #include ".\display.c"
   7          #include ".\otimer.c"
   8          #include ".\ht9200.c"
   9          //#include ".\okey.c"
  10          #include ".\serial.c"
  11          /*
  12          void senddata_init()
  13          {
  14          	uchar i ;
  15          	send_number[0] = 8 ;
  16          	send_number[1] = 0 ;
  17          	send_number[2] = 5 ;
  18          	for(i=3;i<Maxnumber;i++)
  19          	{
  20          		send_number[i] = 0xff ;		//初始化拨号的号码
  21          	}
  22          }
  23          
  24          void mem_move(uchar *out,uchar *in,uchar Len)
  25          {
  26          	uchar i ;
  27          	
  28          	for(i=0;i<Len;i++)
  29          		*(out +i) = *(in +i) ;
  30          }
  31          
  32          void sendnumber()				//拨号
  33          {
  34          	uchar i ;
  35          	for(i=0;i<Maxnumber;i++)
  36          	{
  37          		if(send_number[i] != 0xff)
  38          		{
  39          			disp_buf[0] = send_number[i] + 0x80;
  40          			delay(100) ;
  41          			send_ht9200(send_number[i]) ;
  42          		}
  43          		else return ;
  44          	}
  45          }
  46          
  47          void send_dtmf(uchar in)
  48          {
  49          	uchar i ;
  50          	for(i=0;i<10;i++)			//send 0-9
  51          	{
  52          		disp_buf[0] = i + 0x80;
  53          		delay(100) ;
  54          		send_ht9200(i) ;
  55          	}
C51 COMPILER V6.02  MAIN                                                                   12/07/2004 13:03:12 PAGE 2   

  56          	disp_buf[0] = in + 0x80;
  57          	delay(100) ;
  58          	send_ht9200(in) ;			//send in
  59          }
  60          */
  61          void SysInit()
  62          {
  63   1      	P0=0xff;
  64   1      	P1=0x0f;
  65   1      	P2=0xef;
  66   1      	P3=0xfb;
  67   1      	keylen = 0 ;
  68   1      	channel = 1 ;
  69   1      	set_flag = 0 ;
  70   1      	play_flag = 0 ;
  71   1      	ring_flag = 0 ;
  72   1      	zaiji_flag = 0 ;
  73   1      	P2_BUF = 0xff ;
  74   1      	send_time = 0xff ;
  75   1      	mem_set(send_flag,FALSE,4) ;
  76   1      	mem_set(key_buf,0xff,Maxnumber) ;
  77   1      	checkRING_Init() ;
  78   1      	checkDV_Init() ;
  79   1      	checkDXC_Init() ;
  80   1      //	senddata_init() ;
  81   1      }
  82          
  83          void Sys_Start()
  84          {
  85   1      	SysInit() ; 
  86   1      	Sys_TimerInit () ;
  87   1      //	OKey_RP_Init() ;
  88   1      	disp_Init();
  89   1      	Serial_Init() ;
  90   1      	delay(800) ;
  91   1      	while(check_DXC() == TRUE)
  92   1      	{
  93   2      		Updata_1Led(17,20,0,20) ;	//disp PHDX
  94   2      		ALARM = 0 ;
  95   2      		delay(100) ;
  96   2      		ALARM = 1 ;
  97   2      		delay(250) ;
  98   2      		ALARM = 0 ;
  99   2      		delay(100) ;
 100   2      		ALARM = 1 ;
 101   2      	}
 102   1      }
 103          
 104          main()
 105          {
 106   1      	uchar temp_ret;
 107   1      	uchar temp_data;
 108   1      	
 109   1      	Sys_Start();
 110   1      	Serial_SendCommand("ok",2) ;
 111   1      	while(1)
 112   1      	{
 113   2      /*		if((send_time>=0)&&(send_time<4)&&(send_flag[send_time] == FALSE))
 114   2      		{
 115   2      			SW = 1 ;
 116   2      			zaiji_flag = 1 ;
 117   2      			Updata_1Led(send_time+1,25,25,25) ;		//disp channel
C51 COMPILER V6.02  MAIN                                                                   12/07/2004 13:03:12 PAGE 3   

 118   2      			P3 = 0xdc | (send_time&0x03) ;			//选择通道 0-3
 119   2      			sendnumber() ;					//拨号
 120   2      			send_flag[send_time] = TRUE ;
 121   2      			temp_ret = Sys_TimerReqire(OTimerID0,200,0) ;	//超时处理
 122   2      		}*/
 123   2      		temp_ret = check_RING() ;				//ring check 
 124   2      		if(temp_ret == TRUE)
 125   2      		{
 126   3      			disp_buf[0] = 21  + 0x80 ;
 127   3      			disp_buf[1] = 0 + 0x80 ;
 128   3      			disp_buf[2] = 18 + 0x80 ;
 129   3      			disp_buf[3] = 2 + 0x80 ;
 130   3      			Serial_SendCommand("ring",4) ;
 131   3      /*			ALARM = 0 ;
 132   3      			delay(400) ;
 133   3      			ALARM = 1 ;
 134   3      			delay(500) ;
 135   3      			ALARM = 0 ;
 136   3      			delay(400) ;
 137   3      			ALARM = 1 ;
 138   3      			SW = 1 ;
 139   3      			delay(100) ;
 140   3      			zaiji_flag = 1 ;
 141   3      			send_ht9200(0x0a) ;	//send A 
 142   3      			temp_ret = Sys_TimerReqire(OTimerID0,200,0) ;		//超时处理*/
 143   3      			ring_flag++ ;
 144   3      			delay(800) ;
 145   3      		}
 146   2      		temp_ret = check_DV() ;			//check dtmf dv
 147   2      		if(temp_ret == TRUE)
 148   2      		{
 149   3      			temp_data = DTMF_read() ;	//in data
 150   3      			if(temp_data != 0xff )
 151   3      			{
 152   4      //				disp_buf[1] = 0 ;
 153   4      //				disp_buf[2] = 0 ;
 154   4      				disp_buf[0] = temp_data + 0x80;			//display
 155   4      				Serial_SendCommand(&temp_data,1) ;
 156   4      //				Sys_TimerRelease(OTimerID0) ;			//release timer
 157   4      /*				if(temp_data == 0x0a)
 158   4      				{
 159   4      					delay(800) ;
 160   4      					ALARM = 0 ;				//SEND MUSIC
 161   4      					delay(1000) ;
 162   4      					ALARM = 1 ;
 163   4      					send_dtmf(0x0b) ;			//send 0-9,b
 164   4      					temp_ret = Sys_TimerReqire(OTimerID0,200,0) ;		//超时处理
 165   4      				}
 166   4      				else if(temp_data == 0x0b)
 167   4      				{
 168   4      					delay(300) ;
 169   4      					send_dtmf(0x0c) ;			//send c  end now start check next channel
 170   4      					delay(100) ;
 171   4      					SW = 0 ;
 172   4      					mem_set(disp_buf,0,4) ;
 173   4      					delay(500) ;
 174   4      				}
 175   4      				else if(temp_data == 0x0c)
 176   4      				{
 177   4      					send_time ++ ;
 178   4      					if(send_time > 3)
 179   4      					{
C51 COMPILER V6.02  MAIN                                                                   12/07/2004 13:03:12 PAGE 4   

 180   4      						SW = 0 ;
 181   4      						delay(400) ;
 182   4      						send_time = 0xff ;
 183   4      						mem_set(send_flag,FALSE,4) ;
 184   4      						Updata_1Led(12,16,21,0) ;	//disp CEND
 185   4      						ALARM = 0 ;
 186   4      						delay(200) ;
 187   4      						ALARM = 1 ;
 188   4      					}
 189   4      					else
 190   4      					{
 191   4      						SW = 0 ;
 192   4      						delay(1000) ;
 193   4      					}
 194   4      				}*/
 195   4      //				if(ring_flag == 1)
 196   4      //				{
 197   4      /*					key_buf[keylen] = temp_data ;
 198   4      					if(keylen<Maxnumber)  keylen ++ ;
 199   4      					if(keylen>=12)
 200   4      					{
 201   4      						Serial_SendCommand(key_buf,keylen) ;
 202   4      						keylen = 0 ;
 203   4      						ring_flag = 0 ;
 204   4      					}
 205   4      //				}*/
 206   4      			}
 207   3      		}
 208   2      		temp_ret = Analyse_OTimerID() ;
 209   2      		if(temp_ret == OTimerID0)
 210   2      		{
 211   3      			SW = 0 ;
 212   3      			zaiji_flag = 0 ;
 213   3      			send_time = 0xff ;
 214   3      			mem_set(send_flag,FALSE,4) ;
 215   3      			Updata_1Led(16,23,23,0) ;
 216   3      			ALARM = 0 ;
 217   3      			delay(100) ;
 218   3      			ALARM = 1 ;
 219   3      			delay(250) ;
 220   3      			ALARM = 0 ;
 221   3      			delay(100) ;
 222   3      			ALARM = 1 ;
 223   3      		}
 224   2      /*		temp_ret = OKey_RP_Scan();
 225   2      		if((temp_ret!=OKey_Macro_NoKey)&&(temp_ret!=Macro_UnhandEvent))
 226   2      		{
 227   2      			if((temp_ret>=0)&&(temp_ret<10))
 228   2      			{
 229   2      				if(zaiji_flag == 1)
 230   2      				{
 231   2      					Updata_1Led(channel,25,25,temp_ret) ;
 232   2      					send_ht9200(temp_ret) ;	//send number key
 233   2      				}
 234   2      				else
 235   2      				{
 236   2      					key_buf[keylen] = temp_ret ;
 237   2      					if(keylen<Maxnumber)  keylen ++ ;
 238   2      					if(keylen<2)
 239   2      						mem_set(disp_buf,0,4) ;
 240   2      					Updata_Number(temp_ret) ;	//disp number
 241   2      				}
C51 COMPILER V6.02  MAIN                                                                   12/07/2004 13:03:12 PAGE 5   

 242   2      			}
 243   2      			else if(temp_ret == 15)		//# set
 244   2      			{
 245   2      				if(set_flag == 1)
 246   2      				{
 247   2      					set_flag = 0 ;
 248   2      					mem_move(send_number,key_buf,keylen) ;
 249   2      					keylen = 0 ;
 250   2      					ALARM = 0 ;		// set ok
 251   2      					delay(200) ;
 252   2      					ALARM = 1 ;
 253   2      					mem_set(disp_buf,0,4) ;
 254   2      				}
 255   2      				else if(set_flag == 2)
 256   2      				{
 257   2      					set_flag = 0 ;
 258   2      					channel = key_buf[keylen-1]%4 ;
 259   2      					P3 = 0xdc|((channel-1)&0x03) ;
 260   2      					keylen = 0 ;
 261   2      					ALARM = 0 ;		// set ok
 262   2      					delay(200) ;
 263   2      					ALARM = 1 ;
 264   2      					mem_set(disp_buf,0,4) ;
 265   2      				}
 266   2      			}
 267   2      			else if(temp_ret == 14)		//* auto check
 268   2      			{
 269   2      				send_time = 0 ;		//start send
 270   2      				disp_buf[3] = send_time  + 0x80 ;
 271   2      			}
 272   2      			else if(temp_ret == 13)		//set
 273   2      			{
 274   2      				set_flag ++ ;		//start set
 275   2      				if(set_flag > 2)
 276   2      					set_flag = 0 ;
 277   2      				keylen = 0 ;
 278   2      				if(set_flag == 0)
 279   2      					 mem_set(disp_buf,0,4) ;
 280   2      				else	 Updata_1Led(5,25,25,set_flag) ;
 281   2      			}
 282   2      			else if(temp_ret == 12)		//clear
 283   2      			{
 284   2      				SW = 0 ;
 285   2      				keylen = 0 ;
 286   2      				set_flag = 0 ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -