应广单片机 PMC150 MINI-C参考程序

[复制链接]
7892|19
 楼主 | 2013-11-22 10:18 | 显示全部楼层 |阅读模式
//PMC150 可用于苹果数据线,豆浆机,数码产品加密,汽车摩托车遥控器,定时器等多种小产品上。应广PMC150, 使用MINI-C开发,使用方便编译效率高,产品性能稳定,欢迎选用。
//让大家看看应广的MINI-C程序架构。附上项目文件夹,可直接用IDE打开旧专案进行编译调试,欢迎多交流。//PMC150 引脚定义
//================================================================================
//             VDD |1     8| GND
//              PA7 |2     7| PA0
//              PA6 |3     6| PA4
//   PA5/PRST# |4     5| PA3
//================================================================================
#include "extern.h"

.ramadr 0       //地址定义为0
word  gw_Point;

.ramadr system      //以后变量地址由系统自行决定
word    gw_T16Cnt;
word gw_Cnt;


byte  gb_Flag;
bit  b_T16_1ms  : gb_Flag.0 //1MS
bit  b_1S_F   : gb_Flag.1 //1S

byte gb_KeyDebounce;
byte gb_KeyNew;
byte gb_KeyOld;
byte  gb_KeyValue;
D_KEYPORT  equ 0b_0000_0001
D_KEY1   equ 0b_0000_0001
D_KeyBounce  equ 30*1000/1024 //30ms
//================================================================================
//
//--------------------------------------------------------------------------------
void Test_DirectScanKey(void)
{
if(b_T16_1ms)
{
b_T16_1ms = 0;
a = pa & D_KEYPORT;
a ^= D_KEYPORT;
if(gb_KeyNew == a)
{//读到值相同值,Debouce
  if(--gb_KeyDebounce == 0)
  {//Debounce结束
   if(gb_KeyOld != gb_KeyNew)
   {
    gb_KeyValue = gb_KeyNew;
    gb_KeyOld = gb_KeyNew;
   }
  }
}
else
{
  gb_KeyNew = a;
  gb_KeyDebounce = D_KeyBounce;
}
}
}
void Test_KeyProcess(void)
{
//处理Key1
if(gb_KeyValue == D_KEY1)
{
gb_KeyValue = 0;
       //pa3 电平翻转
a = pa;
a ^= 0x08;
pa = a;
}
}
//================================================================================
//TABLE
//--------------------------------------------------------------------------------
void Pr0_Skip(void)
{
pcadd a;   //a = 1~n,a值等于0时不能跳出pcadd循环
{
ret 0xaa;
ret 0xbb;
ret 0xcc;
ret 0xdd;
ret 0xee;
}
}
//================================================================================
void FPPA0(void)
{
.ADJUST_IC SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;
pac = 0b_1111_1110;   //pa0 pull high
pa = 0b_0000_0000;
paph = 0b_0000_0001;
$ padier 0b_1111_1001;
//------------------------------------------------------------
//清除RAM
gw_Point = _SYS(RAM_SIZE)-1;
a = 0;
do
{
*gw_Point = a;
}while(--gw_Point$0);
//------------------------------------------------------------
//定时1MS
gw_Point = 1024 - 1000;   
stt16 gw_T16Cnt;
$ t16m SYSCLK,/4,bit10;
intrq = 0;
inten.2 = 1;
engint;
//------------------------------------------------------------
//从ROM中取数据
a = 0x02;
Pr0_Skip();
//------------------------------------------------------------
while (1)
{
.wdreset;
Test_DirectScanKey();
       Test_KeyProcess();
}
}
//================================================================================
void Interrupt(void)
{
pushaf;
if(intrq.t16)  //1MS
{
intrq.t16 = 0;
stt16 gw_T16Cnt;
//test IO
       a = pa;
a ^= 0x80;
pa = a;
b_T16_1ms = 1;
gw_Cnt++;
if(gw_Cnt > 999)
{//1S计数
  gw_Cnt = 0;
  b_1S_F = 1;
}
}
popaf;
}
//================================================================================

下载信息  [文件大小:9.0 KB  下载次数:1]
点击浏览该文件:pmc150.rar
PMC150.rar [迅雷下载]
| 2013-11-22 10:39 | 显示全部楼层
这个C有点另类
| 2013-11-22 12:10 | 显示全部楼层
用过应广,看到所谓的MINI-C
| 2013-11-22 12:31 | 显示全部楼层
这怎么感觉不像C呀,有点看不太懂
| 2013-11-22 16:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主 | 2013-11-22 16:37 | 显示全部楼层
www5911839 发表于 2013-11-22 12:10
用过应广,看到所谓的MINI-C

能否说说你的体验,感觉好用还是不好用?MINI-C从架构上说,绝对比汇编好用多了。
这个程序书写作者融合了很多汇编的成份在这个例程中。比如对位操作的表达,直接用"."
表示,这是标准C不具备的功能。
 楼主 | 2013-11-22 16:41 | 显示全部楼层
zd420325 发表于 2013-11-22 16:10
现在做标准单片机C,想想以前写mini-c,就像把手脚给绑住了一样,呵呵
不过赞一个,双核也算一种创新吧
个人 ...

PMC150, 也是单核的MCU了,价格直接超大陆芯圣的SOP8了,是菲林,松翰,义隆,芯圣,中微等SOP8的替代品。不过我们不提供转CODE技术,旧产品,量大的值得重新用应广的PMC150开发一次。
 楼主 | 2014-5-30 10:27 | 显示全部楼层
价格,关键是价格到位,开发不累。
| 2015-6-22 11:47 | 显示全部楼层
请问这个单片机怎么 控制io引脚输出高低电平
| 2015-6-22 11:48 | 显示全部楼层
mwole 发表于 2015-6-22 11:47
请问这个单片机怎么 控制io引脚输出高低电平

51是P0就行了,这个不知道怎么操作
| 2015-8-22 07:16 | 显示全部楼层
lou楼主求教呀
| 2015-8-22 07:58 | 显示全部楼层
可以教我一下吗?
| 2015-10-19 21:07 | 显示全部楼层
DDDDDDDDDDD
 楼主 | 2016-3-21 17:28 | 显示全部楼层
继续关注
| 2016-9-27 10:19 | 显示全部楼层
楼主,pa = 0b_0000_0000为什么要加下划线呀?
 楼主 | 2016-10-19 11:43 | 显示全部楼层
acd09154 发表于 2016-9-27 10:19
楼主,pa = 0b_0000_0000为什么要加下划线呀?

多几个下划线,显得更整齐,方便观看。
| 2018-1-11 13:22 | 显示全部楼层
对于初学者来说首先要学习C语言基础,就相当于80%会单片机了,因为现在所有8/16/32位(51系列,MSP430系列,ARM系列

)都是使用C语言。如果你已经有了不错的基础,推荐区华清星创客superedu.com.cn深造,毕竟目前市场来说更多的是嵌入式高端人才,

低端人才的趋于饱和,工资肯定会降,所以提高自身知识是关键。
| 2018-1-13 21:34 | 显示全部楼层
谢谢分享。
| 2018-4-10 21:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
| 2018-4-11 12:06 | 显示全部楼层

lou楼主求教呀
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /3 下一条

快速回复 返回顶部 返回列表