日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PIC单片机入门_PICC的指向RAM的指针

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PIC单片机入门_PICC的指向RAM的指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:

將30h,31h,32h單元中最大的數放入40h。

利用指向RAM的指針進行編程如下:


<span style="font-size:18px;">#include <pic.h> static volatile unsigned char add1 @0x30; static volatile unsigned char add2 @0x31; static volatile unsigned char add3 @0x32; static volatile unsigned char add @0x40; main() //絕對地址定位 { add1=0x51;add2=0x5;add3=0x60;if(add1>add2) add=add1;else add=add2;if(add3>add) add=add3;while(1){ ; } }</span>

注意:

本例中add1、add2、add3和add本質上都是地址,因此它們都是指向RAM的指針。在PICC中用指針進行尋址是通過FSR間接尋址的,因此add1=0x51以及add=add1都是以間接尋址方式進行賦值的。

以上程序中的指針add1、add2、add3和add都是指向bank0,假如要定義指向其他bank的指針也是可以的。

例如:

<span style="font-size:18px;">#include<pic.h> //將絕對地址定位在不同的體 static volatile unsigned char add1 @0x30 ; //實際地址=30h bank1 static volatile unsigned char add2 @0x31; //實際地址=(80h+31h)=0B1h bank2 static volatile unsigned char add3 @0x32 ; //實際地址=80h*2+32h=132h bank3 static volatile unsigned char add @0x40 ; //實際地址=80h*3+40h=1c0h int x,y,z; void comparison() { if (x>y)z=x;elsez=y; } main() { add1=0x31; add2=0x34; add3=0x28;x=add1; y=add2; comparison();x=z; y=add3; comparison();add=z;while(1){ ; } }</span>

換一種思路:

也可以直接對三個常數進行比較大小,然后將最大的數存放在于bank3的某單元中。

<span style="font-size:18px;">#include<pic.h> //符號定義 #define x_data 0xe0; #define y_data 0x60; #define z_data 0x90; bank3 static volatile unsigned char add @0x40 ; //實際地址=80h*3+40h=1c0h int x,y,z; void comparison() { if (x>y)z=x;elsez=y; } main() { x = x_data ; y = y_data; comparison();x = z;y = z_data; comparison();add = z;while(1){ ; } }</span>

總結

以上是生活随笔為你收集整理的PIC单片机入门_PICC的指向RAM的指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。