📄 ds18b20.lst
字号:
Sunplus u'nSP Assembler - Ver. 1.14.3.1
Listing File Has Been Relocated
.DEFINE P_IOA_Dir 0x7002
.DEFINE P_IOA_Attrib 0x7003
.DEFINE P_IOA_Latch 0x7004
.DEFINE P_IOB_Data 0x7005
.DEFINE P_IOB_Buffer 0x7006
.DEFINE P_IOB_Dir 0x7007
.DEFINE P_IOB_Attrib 0x7008
.DEFINE P_SystemClock 0x7013
.DEFINE P_TimerA_Data 0x700A
.DEFINE P_TimerA_Ctrl 0x700B
.DEFINE P_INT_Ctrl 0x7010
.DEFINE P_INT_Clear 0x7011
.DEFINE P_Watchdog_Clear 0x7012
//以下重复定义用于端口的定义,如用户需要针对自用的设计选择端口时,可以更改
//以下宏定义中的定义即可
//.DEFINE Port_Data P_IOB_Data
//.DEFINE Port_Buffer P_IOB_Buffer
//.DEFINE Port_Dir P_IOB_Dir
//.DEFINE Port_Attrib P_IOB_Attrib
.DEFINE DQ 0x8000
//由于DS18B20的驱动程序需要修改CPU主频,为了让用户设用DS18B20 的API函数后,能
//恢复到原来的系统时钟、CPU主频设置,用户可以在下面的常量R_SystemClock中定义
//用户设计需要的值
0000A33B .DATA
R_SystemClock:
0000A33B 18 00 .DW 0x0018 //buffer of save the system clock
//======================================================
// 汇编格式: _F_18B20_Delay
// C格式: void F_18B20_Delay(unsigned int Timers);
// 实现功能: 在49MHz的主频下的uS延时程序
// 入口参数: 需要延时的时长(以uS为单位)
// 出口参数: 无
//======================================================
.PUBLIC _F_18B20_Delay
_F_18B20_Delay:
// cmp r1,1
// jna Delay_Exit
//Delay_Loop:
// nop
// nop
// nop
// nop
// nop
// nop
// nop
// nop
// nop
// nop
// r1-=1
// jnz Delay_Loop
//Delay_Exit:
// retf
0000A33C 09 93 26 FC r1=0xfc26;
0000A33E 19 D3 0A 70 [P_TimerA_Data]=r1;
0000A340 4C 92 r1=0x000c;
0000A341 19 D3 0B 70 [P_TimerA_Ctrl]=r1;
0000A343 09 93 00 54 r1=0x5400;
0000A345 19 D3 10 70 [P_INT_Ctrl]=r1;
0000A347 41 F1 int IRQ;
0000A348 90 9A retf;
//======================================================
// 汇编格式: _F_18B20_Delay1
// C格式: void F_18B20_Delay1(unsigned int Timers);
// 实现功能: 在49MHz的主频下的uS延时程序
// 入口参数: 需要延时的时长(以uS为单位)
// 出口参数: 无
//======================================================
.PUBLIC _F_18B20_Delay1
0000A349 09 93 00 80 r1=DQ; //将端口b15设置成带数据缓存器的高电平输出
0000A34B 19 D3 08 70 [P_IOB_Attrib]=r1;
0000A34D 19 D3 07 70 [P_IOB_Dir]= r1 ;
0000A34F 19 D3 05 70 [P_IOB_Data] = r1;
_F_18B20_Delay1: //延时750ms用来完成温度转换
0000A351 0A 95 F8 02 r2=760
Delay:
0000A353 09 93 E8 03 r1=1000
Delay_Loop1:
0000A355 00 EE nop
0000A356 00 EE nop
0000A357 00 EE nop
0000A358 00 EE nop
0000A359 00 EE nop
0000A35A 00 EE nop
0000A35B 00 EE nop
0000A35C 00 EE nop
0000A35D 00 EE nop
0000A35E 00 EE nop
0000A35F 41 22 r1-=1
0000A360 41 42 cmp r1,1
0000A361 4D 1E jnb Delay_Loop1
0000A362 41 24 r2-=1
0000A363 41 44 cmp r2,1
0000A364 52 1E jnb Delay
0000A365 90 9A retf
//======================================================
// 汇编格式: _F_18B20_SetSystemCLK
// C格式: void F_18B20_SetSystemCLK(void);
// 实现功能: 将CPU主频设置为49MHz,为的是在时序控制时
// 可以获取到较精确的延时
// 入口参数: 无
// 出口参数: 无
//======================================================
.PUBLIC _F_18B20_SetSystemCLK
_F_18B20_SetSystemCLK:
0000A366 09 93 88 00 r1 = 0x88
0000A368 19 D3 13 70 [P_SystemClock] = r1 //set system clock upto 49MHz
0000A36A 90 9A retf
//======================================================
// 汇编格式: _F_18B20_RsuSystemCLK
// C格式: void F_18B20_RsuSystemCLK(void);
// 实现功能: 恢复系统及CPU主频,而至于恢复为多少,则
// 由前面定义的变量R_SystemClock的值确定,用
// 户可根据各自的程序设计需求进行改动
// 入口参数: 无
// 出口参数: 无
//======================================================
.PUBLIC _F_18B20_RsuSystemCLK
_F_18B20_RsuSystemCLK:
0000A36B 11 93 3B A3 r1 = [R_SystemClock]
0000A36D 19 D3 13 70 [P_SystemClock] = r1
0000A36F 90 9A retf
//======================================================
// 汇编格式: _F_18B20_Initial_IO
// C格式: void F_18B20_Initial_IO(void);
// 实现功能: 端口初始化子程序
// 入口参数: 无
// 出口参数: 无
//======================================================
.PUBLIC _F_18B20_Initial_IO
_F_18B20_Initial_IO: //端口初始化将b15口作为悬浮式输入
0000A370 09 93 00 80 r1=DQ;
0000A372 19 D3 08 70 [P_IOB_Attrib]=r1;
0000A374 40 92 r1=0x0000;
0000A375 19 D3 05 70 [P_IOB_Data] = r1;
0000A377 19 D3 07 70 [P_IOB_Dir]= r1
0000A379 90 9A retf
//======================================================
// 汇编格式: _F_18B20_Reset
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -