📄 sms-7weima_bj.c
字号:
//ICC-AVR application builder : 2006-12-1 9:26:37
// Target : M128
// Crystal: 7.3728Mhz
#include <iom128v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar as[]={"Welcome to szght!"},as1[160];
uchar sms_ascii_7pdu(uchar *shouzhi,uchar zijie)
{//ascii-pdu7 编码
uchar shuju,fanhuizhi=zijie-(zijie/8),loop,quzhi=0,yiwei=0,yiwei_d=7;
uchar *zhizhen=shouzhi;
for(loop=0;loop!=zijie;++loop)
{
if(quzhi!=0xff){quzhi=(quzhi<<1)|1;}else{quzhi=1;}
shuju=*(shouzhi+1)&quzhi;
if(yiwei<9)
{
*shouzhi>>=yiwei;++yiwei;
if(loop==(zijie-1)){break;}
}
else
{
yiwei=0;
}
if(yiwei_d!=0)
{
shuju<<=(yiwei_d);--yiwei_d;
}
else
{
yiwei_d=7;
shuju<<=(yiwei_d);--yiwei_d;
}
*zhizhen=*shouzhi|shuju;
++zhizhen;
if(quzhi==0x7f)
{quzhi=0;yiwei=0;yiwei_d=7;++shouzhi;}
++shouzhi;
}
return(fanhuizhi);
}
uchar sms_7pdu_ascii(uchar *shouzhi,uchar *mubiaoshouzhi,uchar zijie)
{//pdu7-ascii 解码
uchar hc1,hc2,fanhuizhi=0,bz=0,zz=0,zz_d=7;
for(;zijie!=0;--zijie)
{
if(bz!=0xff){bz=(bz>>1)|0x80;}
//57 65 6c 63 6f 6d 65 20 74 6f 20 73 7a 67 68 74 21
hc1=(*shouzhi&bz)>>zz_d;*mubiaoshouzhi=*shouzhi&(~bz);
if(zz!=0)
{
*mubiaoshouzhi<<=zz;
*mubiaoshouzhi=*mubiaoshouzhi|hc2;
if(bz==0xfe)
{
++mubiaoshouzhi;++fanhuizhi;
*mubiaoshouzhi=hc1;
}
}
++shouzhi;++mubiaoshouzhi;++fanhuizhi;
if(zz<9){++zz;}
if(zz_d!=0){--zz_d;}
if(bz!=0xfe){hc2=hc1;}
if(bz==0xfe)
{
bz=0x0;zz=0;zz_d=7;
}
}
return(fanhuizhi);
}
//
void main(void)
{
uchar *shouzhi,*mubiaoshouzhi;uchar zijie,a;
shouzhi=&as[0];
zijie=17;
a=sms_ascii_7pdu(shouzhi,zijie);
zijie=a;
shouzhi=&as[0];
mubiaoshouzhi=&as1[0];
a=sms_7pdu_ascii(shouzhi,mubiaoshouzhi,zijie);
zijie=a;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -