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

📄 lcd.lst

📁 Working with DS1820 temperature sensor on SAM7 mC. Watch for timings!
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1              		.code	16   2              		.file	"lcd.c"  10              	.Ltext0:  11              		.global	l_pPio  12              		.data  13              		.align	2  16              	l_pPio:  17 0000 00F4FFFF 		.word	-3072  18              		.text  19              		.align	2  20              		.global	Delay_mS  21              		.code 16  22              		.thumb_func  24              	Delay_mS:  25              	.LFB290:  26              		.file 1 "LCD/lcd.c"   1:LCD/lcd.c     **** //lcd.c
   2:LCD/lcd.c     **** #include <string.h>
   3:LCD/lcd.c     **** #include "include/includes.h"
   4:LCD/lcd.c     **** 
   5:LCD/lcd.c     **** // POINTER
   6:LCD/lcd.c     **** AT91PS_PIO    l_pPio   = AT91C_BASE_PIOA;
   7:LCD/lcd.c     **** 
   8:LCD/lcd.c     **** 
   9:LCD/lcd.c     **** unsigned long data;
  10:LCD/lcd.c     **** void Delay_mS (unsigned long a) { while (--a!=0); }
  27              		.loc 1 10 0  28 0000 80B5     		push	{r7, lr}  29              	.LCFI0:  30 0002 6F46     		mov	r7, sp  31              	.LCFI1:  32 0004 81B0     		sub	sp, sp, #4  33              	.LCFI2:  34 0006 3B1F     		sub	r3, r7, #4  35 0008 1860     		str	r0, [r3]  36              	.L2:  37              		.loc 1 10 0  38 000a 3A1F     		sub	r2, r7, #4  39 000c 3B1F     		sub	r3, r7, #4  40 000e 1B68     		ldr	r3, [r3]  41 0010 013B     		sub	r3, r3, #1  42 0012 1360     		str	r3, [r2]  43 0014 3B1F     		sub	r3, r7, #4  44 0016 1B68     		ldr	r3, [r3]  45 0018 002B     		cmp	r3, #0  46 001a F6D1     		bne	.L2  47 001c BD46     		mov	sp, r7  48              		@ sp needed for prologue  49 001e 80BC     		pop	{r7}  50 0020 01BC     		pop	{r0}  51 0022 0047     		bx	r0  52              	.LFE290:  54              		.global	codr  55              		.bss  56              		.align	2  59              	codr:  60 0000 00000000 		.space	4  61              		.global	sodr  62              		.align	2  65              	sodr:  66 0004 00000000 		.space	4  67              		.global	oer  68              		.align	2  71              	oer:  72 0008 00000000 		.space	4  73              		.global	per  74              		.align	2  77              	per:  78 000c 00000000 		.space	4  79              		.text  80              		.align	2  81              		.global	SetPinsOnly  82              		.code 16  83              		.thumb_func  85              	SetPinsOnly:  86              	.LFB291:  11:LCD/lcd.c     **** 
  12:LCD/lcd.c     **** unsigned long codr = 0x0;
  13:LCD/lcd.c     **** unsigned long sodr = 0x0;
  14:LCD/lcd.c     **** unsigned long oer  = 0x0;
  15:LCD/lcd.c     **** unsigned long per  = 0x0;
  16:LCD/lcd.c     **** 
  17:LCD/lcd.c     **** void SetPinsOnly(unsigned long pin) {
  87              		.loc 1 17 0  88 0024 80B5     		push	{r7, lr}  89              	.LCFI3:  90 0026 6F46     		mov	r7, sp  91              	.LCFI4:  92 0028 81B0     		sub	sp, sp, #4  93              	.LCFI5:  94 002a 3B1F     		sub	r3, r7, #4  95 002c 1860     		str	r0, [r3]  18:LCD/lcd.c     ****   l_pPio->PIO_SODR = l_pPio->PIO_ODSR | pin;
  96              		.loc 1 18 0  97 002e 064B     		ldr	r3, .L7  98 0030 1968     		ldr	r1, [r3]  99 0032 054B     		ldr	r3, .L7 100 0034 1B68     		ldr	r3, [r3] 101 0036 9A6B     		ldr	r2, [r3, #56] 102 0038 3B1F     		sub	r3, r7, #4 103 003a 1B68     		ldr	r3, [r3] 104 003c 1343     		orr	r3, r3, r2 105 003e 0B63     		str	r3, [r1, #48]  19:LCD/lcd.c     **** }
 106              		.loc 1 19 0 107 0040 BD46     		mov	sp, r7 108              		@ sp needed for prologue 109 0042 80BC     		pop	{r7} 110 0044 01BC     		pop	{r0} 111 0046 0047     		bx	r0 112              	.L8: 113              		.align	2 114              	.L7: 115 0048 00000000 		.word	l_pPio 116              	.LFE291: 118              		.align	2 119              		.global	ClearPinsOnly 120              		.code 16 121              		.thumb_func 123              	ClearPinsOnly: 124              	.LFB292:  20:LCD/lcd.c     **** 
  21:LCD/lcd.c     **** void ClearPinsOnly(unsigned long pin) {
 125              		.loc 1 21 0 126 004c 80B5     		push	{r7, lr} 127              	.LCFI6: 128 004e 6F46     		mov	r7, sp 129              	.LCFI7: 130 0050 81B0     		sub	sp, sp, #4 131              	.LCFI8: 132 0052 3B1F     		sub	r3, r7, #4 133 0054 1860     		str	r0, [r3]  22:LCD/lcd.c     ****   l_pPio->PIO_CODR = (~l_pPio->PIO_ODSR) | pin;
 134              		.loc 1 22 0 135 0056 074B     		ldr	r3, .L11 136 0058 1968     		ldr	r1, [r3] 137 005a 064B     		ldr	r3, .L11 138 005c 1B68     		ldr	r3, [r3] 139 005e 9B6B     		ldr	r3, [r3, #56] 140 0060 DA43     		mvn	r2, r3 141 0062 3B1F     		sub	r3, r7, #4 142 0064 1B68     		ldr	r3, [r3] 143 0066 1343     		orr	r3, r3, r2 144 0068 4B63     		str	r3, [r1, #52]  23:LCD/lcd.c     **** }
 145              		.loc 1 23 0 146 006a BD46     		mov	sp, r7 147              		@ sp needed for prologue 148 006c 80BC     		pop	{r7} 149 006e 01BC     		pop	{r0} 150 0070 0047     		bx	r0 151              	.L12: 152 0072 0000     		.align	2 153              	.L11: 154 0074 00000000 		.word	l_pPio 155              	.LFE292: 157              		.align	2 158              		.global	E_Pulse 159              		.code 16 160              		.thumb_func 162              	E_Pulse: 163              	.LFB293:  24:LCD/lcd.c     **** 
  25:LCD/lcd.c     **** 
  26:LCD/lcd.c     **** void E_Pulse()
  27:LCD/lcd.c     **** {
 164              		.loc 1 27 0 165 0078 80B5     		push	{r7, lr} 166              	.LCFI9: 167 007a 6F46     		mov	r7, sp 168              	.LCFI10:  28:LCD/lcd.c     ****   l_pPio->PIO_SODR = E;   //set E to high
 169              		.loc 1 28 0 170 007c 084B     		ldr	r3, .L15 171 007e 1A68     		ldr	r2, [r3] 172 0080 8023     		mov	r3, #128 173 0082 9B03     		lsl	r3, r3, #14 174 0084 1363     		str	r3, [r2, #48]  29:LCD/lcd.c     ****   Delay_mS(10);              //delay				//it was 100
 175              		.loc 1 29 0 176 0086 0A20     		mov	r0, #10 177 0088 FFF7FEFF 		bl	Delay_mS  30:LCD/lcd.c     ****   l_pPio->PIO_CODR = E;   //set E to low
 178              		.loc 1 30 0 179 008c 044B     		ldr	r3, .L15 180 008e 1A68     		ldr	r2, [r3] 181 0090 8023     		mov	r3, #128 182 0092 9B03     		lsl	r3, r3, #14 183 0094 5363     		str	r3, [r2, #52]  31:LCD/lcd.c     **** }
 184              		.loc 1 31 0 185 0096 BD46     		mov	sp, r7 186              		@ sp needed for prologue 187 0098 80BC     		pop	{r7} 188 009a 01BC     		pop	{r0} 189 009c 0047     		bx	r0 190              	.L16: 191 009e 0000     		.align	2 192              	.L15: 193 00a0 00000000 		.word	l_pPio 194              	.LFE293: 196              		.align	2 197              		.global	LCDInit 198              		.code 16 199              		.thumb_func 201              	LCDInit: 202              	.LFB294:  32:LCD/lcd.c     **** 
  33:LCD/lcd.c     **** void LCDInit()
  34:LCD/lcd.c     **** {
 203              		.loc 1 34 0 204 00a4 80B5     		push	{r7, lr} 205              	.LCFI11: 206 00a6 6F46     		mov	r7, sp 207              	.LCFI12:  35:LCD/lcd.c     ****   // First set D4, D5, D6, D7, RS, RW, E to output ports + BIT23 (light)
  36:LCD/lcd.c     ****   l_pPio->PIO_OER = (BIT16|BIT17|BIT18|BIT19|BIT20|E|BIT22|LCD_LIGHT);
 208              		.loc 1 36 0 209 00a8 294B     		ldr	r3, .L19 210 00aa 1A68     		ldr	r2, [r3] 211 00ac FF23     		mov	r3, #255 212 00ae 1B04     		lsl	r3, r3, #16 213 00b0 1361     		str	r3, [r2, #16]  37:LCD/lcd.c     **** 
  38:LCD/lcd.c     ****   // Enable D4, D5, D6, D7, RS, RW, E ports + BIT23 (light)
  39:LCD/lcd.c     ****   l_pPio->PIO_PER = (BIT16|BIT17|BIT18|BIT19|BIT20|E|BIT22|LCD_LIGHT);
 214              		.loc 1 39 0 215 00b2 274B     		ldr	r3, .L19 216 00b4 1A68     		ldr	r2, [r3] 217 00b6 FF23     		mov	r3, #255 218 00b8 1B04     		lsl	r3, r3, #16 219 00ba 1360     		str	r3, [r2]  40:LCD/lcd.c     **** 
  41:LCD/lcd.c     **** 
  42:LCD/lcd.c     ****   l_pPio->PIO_CODR = BIT20|E|BIT22;   //clear RS, E, RW
 220              		.loc 1 42 0 221 00bc 244B     		ldr	r3, .L19 222 00be 1A68     		ldr	r2, [r3] 223 00c0 E023     		mov	r3, #224 224 00c2 DB03     		lsl	r3, r3, #15 225 00c4 5363     		str	r3, [r2, #52]  43:LCD/lcd.c     ****   Delay_mS(1100000);                      //delay ~110ms
 226              		.loc 1 43 0 227 00c6 234B     		ldr	r3, .L19+4 228 00c8 181C     		mov	r0, r3 229 00ca FFF7FEFF 		bl	Delay_mS  44:LCD/lcd.c     **** 
  45:LCD/lcd.c     ****   l_pPio->PIO_SODR = BIT16|BIT17;         //set D4 and D5 port to 1
 230              		.loc 1 45 0 231 00ce 204B     		ldr	r3, .L19 232 00d0 1A68     		ldr	r2, [r3] 233 00d2 C023     		mov	r3, #192 234 00d4 9B02     		lsl	r3, r3, #10 235 00d6 1363     		str	r3, [r2, #48]  46:LCD/lcd.c     ****   E_Pulse();                              //high->low to E port (pulse)
 236              		.loc 1 46 0 237 00d8 FFF7FEFF 		bl	E_Pulse  47:LCD/lcd.c     **** 
  48:LCD/lcd.c     ****   //Delay_mS(100000);                       //delay ~10ms
  49:LCD/lcd.c     ****   Delay_mS(50000);                       //delay ~5ms
 238              		.loc 1 49 0 239 00dc 1E4B     		ldr	r3, .L19+8 240 00de 181C     		mov	r0, r3 241 00e0 FFF7FEFF 		bl	Delay_mS  50:LCD/lcd.c     **** 
  51:LCD/lcd.c     ****   l_pPio->PIO_SODR = BIT16|BIT17;         //set D4 and D5 port to 1
 242              		.loc 1 51 0 243 00e4 1A4B     		ldr	r3, .L19 244 00e6 1A68     		ldr	r2, [r3] 245 00e8 C023     		mov	r3, #192 246 00ea 9B02     		lsl	r3, r3, #10

⌨️ 快捷键说明

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