Цитата(Aloc @ Nov 30 2011, 05:59)

Здравствуйте, помогите, пожалуйста, начинающему. В общем необходимо сохранить четыре двухбайтовые переменные, так, чтобы при выключении МК через регистр управления питанием, при новом включении по RST их можно было вернуть.
Идея, вообще, в следующем при первом включении оценивается средний уровень в 4-х каналах АЦП МК отключается, при последующем включении используются полученные значения.
Не совсем понял задачу. В Вашей постановке я вижу 2 варианта. Вариант 1. Опрос АЦП и запоминание производится только 1 раз после прошивания МК. В этом случае используем флэш. Работа с ней описана в документации на МК в соответствующем разделе "flash Memory". Будут вопросы после прочтения - обращайтесь сюда. Вариант 2. Вам при каждом включении питания нужно производить опрос, затем софтверный сброс и работа с новыми данными. В этом случае флэш насиловать не стоит. Дальнейшие действия зависят от компилятора. У меня была похожая задача - определять количество софтверных сбросов и после определенного числа вешать контроллер. У меня Keil/ Делал так. В xdata завожу переменную. В подстегиваемом файле startup.a51 по умолчанию
Код
XDATALEN EQU 0H
Т.е. область xdata не обнуляется после сброса. Далее все просто. После сброса по питанию обнуляю переменную, после софтверного сброса инкрементирую. Причину сброса можно определить по регистру сброса RSTSRC.
UPD. Сейчас более внимательно вчитался в вопрос. Есть проблема. Хотите повторные сбросы производить ножкой RST. В этом случае нужно обеспечить при включении, чтобы нога сброса поднималась к 1 быстрее tPORDelay (<0.3ms из докуметации). Либо использовать другой сброс, например по копаратору.